Python 3.x keplar.gl操作addDataToMap将旧数据集替换为新数据集,也将丢失地图层

Python 3.x keplar.gl操作addDataToMap将旧数据集替换为新数据集,也将丢失地图层,python-3.x,react-redux,kepler,Python 3.x,React Redux,Kepler,我有Kepler.gl演示应用程序,并将其转换为Jupiter绑定应用程序,在该应用程序中,我想修改AddDataToMap选项卡,在该选项卡中,用户希望选择需要在地图上显示的自己的数据,因此我对js绑定应用程序做了以下更改 store.js --------- const customizedKeplerGlReducer = keplerGlReducer.initialState({ uiState: { currentModal: null, activeSidePa

我有Kepler.gl演示应用程序,并将其转换为Jupiter绑定应用程序,在该应用程序中,我想修改AddDataToMap选项卡,在该选项卡中,用户希望选择需要在地图上显示的自己的数据,因此我对js绑定应用程序做了以下更改

store.js
---------
const customizedKeplerGlReducer = keplerGlReducer.initialState({
  uiState: {
    currentModal: null,
    activeSidePanel: null
  }
});

const reducers = combineReducers({
  // mount keplerGl reducer
  keplerGl: customizedKeplerGlReducer
});

const createAppStore = onChangeHandler => {
  const updatesMiddleware = store => next => action => {
    // exclude some actions
    // Call the next dispatch method in the middleware chain.

    /* eslint-disable callback-return */
    const returnValue = next(action);
    /* eslint-enable callback-return */

    // state after dispatch
    if (typeof onChangeHandler === 'function') {
      onChangeHandler(action, store);
    }

    // This will likely be the action itself, unless
    // a middleware further in chain changed it.
    return returnValue;
  };

  const middlewares = enhanceReduxMiddleware([thunk,updatesMiddleware]);
  const enhancers = [applyMiddleware(...middlewares)];

  const store = createStore(reducers, {}, compose(...enhancers));

  return store;
};

export default createAppStore;

reducer.js
-------------
const demoReducer = combineReducers({
  // mount keplerGl reducer
  keplerGl: keplerGlReducer,
  app: appReducer
});

loadremotemap.js
-------------------- 
 onLoadRemoteMap = () => {
    const {dataUrl} = this.state;
    if (!dataUrl) {
      return;
    }
    const requestOptions = {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify( dataUrl)
  };
      fetch('http://192.168.43.105:5000/api/',requestOptions).then(res => res.json()).then(data => {
            console.log(data)
           this.props.onLoadRemoteMap({data},{dataUrl});
          // this.props.onLoadRemoteMap({dataUrl});
        });
    //this.props.onLoadRemoteMap({dataUrl});
  };
 button
  ------------
  
              <StyledBtn type="submit" onClick={this.onLoadRemoteMap}>

action.js
--------------

export function loadRemoteMap(options,dataurl) {
  //console.log(sampleTripData);
  var rowdata = options.data["rows"]["0"];
  var rowarray=[];
  rowdata.forEach(obj=>{
  var myInnerArray=[];
  Object.keys(obj).forEach(key=>{
      myInnerArray.push(obj[key]);
  })
  rowarray.push(myInnerArray);
  });
     

  const visurdata = {
   fields:options.data["schema"]["0"],
   rows:rowarray
  //  rows: [
  //   ['test1', -73.99389648, 40.75011063],
  //   ['test2', -73.97642517, 40.73981094],
  //   ['test3', -73.96870422, 40.75424576],
  // ]
   };
//console.log(visurdata);
   const sampleConfig = {
    visState: {
      filters: [
        {
          id: dataurl,
          dataId: dataurl,
          name: dataurl,
         // type: 'timeRange',
          enlarged: true
        }
      ]
    }
  }
  return dispatch => {
    dispatch(setLoadingMapStatus(true));
    dispatch(addDataToMap({datasets: {
          info: {
            label: dataurl.dataUrl,
            id: dataurl.dataUrl
          },
          data: visurdata
        },
        option: {
          centerMap: true,
          readOnly: false,
          keepExistingConfig: true
        },
        info: {
          title: dataurl.dataUrl,
          description: dataurl.dataUrl
        },
       // config: sampleConfig
      })
     ).then({

    });
  
    error => {
          const {target = {}} = error;
         const {status, responseText} = target;
          dispatch(loadRemoteResourceError({status, message: responseText}, options.dataUrl));
        }
   
  };

}
store.js
---------
const customizedKeplerGlReducer=keplerGlReducer.initialState({
uiState:{
currentModal:null,
activeSidePanel:空
}
});
常数减速机=组合减速机({
//安装开普勒减速器
开普勒:自定义开普勒导出器
});
const createAppStore=onChangeHandler=>{
const updatesMiddleware=store=>next=>action=>{
//排除某些操作
//调用中间件链中的下一个分派方法。
/*eslint禁用回调返回*/
const returnValue=下一步(操作);
/*eslint启用回调返回*/
//发文后陈述
if(onChangeHandler的类型==='function'){
onChangeHandler(操作、存储);
}
//这很可能是行动本身,除非
//链中的另一个中间件改变了它。
返回值;
};
const middleware=enhancedUxMiddleware([thunk,updatesMiddleware]);
常量增强器=[applyMiddleware(…中间件)];
conststore=createStore(还原子,{},组合(…增强子));
退货店;
};
导出默认的createAppStore;
reducer.js
-------------
const demoReducer=组合减速机({
//安装开普勒减速器
开普勒,
应用程序:评估员
});
loadremotemap.js
-------------------- 
onLoadRemoteMap=()=>{
const{dataUrl}=this.state;
如果(!dataUrl){
返回;
}
常量请求选项={
方法:“POST”,
标题:{'Content-Type':'application/json'},
正文:JSON.stringify(dataUrl)
};
取('http://192.168.43.105:5000/api/,requestOptions)。然后(res=>res.json())。然后(data=>{
console.log(数据)
this.props.onLoadRemoteMap({data},{dataUrl});
//this.props.onLoadRemoteMap({dataUrl});
});
//this.props.onLoadRemoteMap({dataUrl});
};
按钮
------------
action.js
--------------
导出函数loadRemoteMap(选项、dataurl){
//console.log(sampleTripData);
var rowdata=options.data[“行”][“0”];
var rowarray=[];
rowdata.forEach(obj=>{
var myInnerArray=[];
Object.keys(obj.forEach)(key=>{
push(obj[key]);
})
推送(myInnerArray);
});
常量visurdata={
字段:options.data[“schema”][“0”],
行:行数组
//行:[
//[test1',-73.99389648,40.75011063],
//[test2',-73.97642517,40.73981094],
//[test3',-73.96870422,40.75424576],
// ]
};
//console.log(visurdata);
常量sampleConfig={
内脏状态:{
过滤器:[
{
id:dataurl,
dataId:dataurl,
名称:dataurl,
//键入:“时间范围”,
放大:对
}
]
}
}
返回调度=>{
调度(setLoadingMapStatus(true));
分派(addDataToMap({数据集:{
信息:{
标签:dataurl.dataurl,
id:dataurl.dataurl
},
数据:visurdata
},
选项:{
中心地图:对,
只读:false,
keepExistingConfig:true
},
信息:{
标题:dataurl.dataurl,
描述:dataurl.dataurl
},
//config:sampleConfig
})
).那么({
});
错误=>{
常量{target={}}=error;
const{status,responseText}=target;
分派(loadRemoteResourceError({status,message:responseText},options.dataUrl));
}
};
}
但是,每当我尝试添加新数据集时,旧数据集将自动删除