在componentDidMount()期间的setState

时间:2018-10-29 15:17:58

标签: javascript reactjs frontend

我在开始一个项目时会做出反应,以提高自己的技能。 但是在我的项目中,当我尝试在钩子ComponentDidMount()中设置从json文件构建的数组时出现错误,我认为此错误是由于上一个错误说的:

test.dataframe <- data.frame(observation = c(1:10),
                             VIE.Code = c("BBRG", "BRBR", "PPWG", "RRWW",
                                          "WRWR", "BBBP", "PBPB", "PPGW",
                                          "RWRW", "BGBG"))

我需要一个特定的库来正确解析json文件吗?

发生最后一次错误以下:

cannot read property 0 of undefined 

具有该方法的组件在这里:

 Can't call setState (or forceUpdate) on an unmounted component.

json文件是从文件夹资产导入的,其格式如下:

class SimpleMap extends Component{

state={
    positions:[],
    isLoading:true
}
componentDidMount(){
    console.log(data.latlngs);
    this.switchCoord(data.latlngs);
}


switchCoord(datas){
//console.log( datas);
console.log("-----------------");
//remplacer latlngs par data pour fonctionner avec le fichier json
datas.forEach(data =>{
  let newLat;
  let newLng;
  let tableWithNewCoord =[];
  //console.log(data)
  data.forEach(d => {
      newLat = d[1];
      newLng = d[0]; 
      let switchCoordData =[newLat,newLng];
      tableWithNewCoord.push(switchCoordData);
    })
    this.setState({
      positions:[...this.state.positions,tableWithNewCoord]
    })
  })


}

在此先感谢您的帮助。 最好的问候

1 个答案:

答案 0 :(得分:1)

我认为问题出在您的switchCoord函数上。您可以简单地尝试一下您的重构功能:

switchCoord(data) //actually data should be renamed to latlngs for readability 
{
  let tableWithNewCoord = [];

  data.forEach( (coord) => {
    tableWithNewCoord.push([coord[1], coord[0]])
  });

  this.setState({positions: tableWithNewCoord});
}