未处理的拒绝(TypeError):this.setState不是函数

时间:2019-06-30 15:27:13

标签: javascript reactjs

当我执行click事件时,setState无法在提取中工作。

buttonClick = (event) => {
  let category = event.target.id;
  let url = this.state.urls[category];
  this.setState = ({
    planets: [],
    starships: [],
    vehicles: [],
    people: [],
    films: []
  });    
  fetch(url)
    .then(resp => resp.json())       
    .then(
      data => this.setState({ category: data })  //error: Uncaught (in promise) TypeError: this.setState is not a function
    );
};

希望解决此错误

2 个答案:

答案 0 :(得分:1)

  

问题

这里的问题是您已将setStatefunction覆盖到object

写作时

    this.setState = ({
        planets: [],
        starships: [],
        vehicles: [],
        people: [],
        films: []
      });  

然后this.setState不再是一个函数,稍后您尝试调用它,因此会出现错误,this.setState不是一个函数。


  

解决方案

您所要做的就是不要将数据分配给setState,而只需像

这样的函数调用中传递数据即可。
  this.setState({
       planets: [],
       starships: [],
       vehicles: [],
       people: [],
       films: []
     });  

您在setState的{​​{1}}中对then的呼叫会起作用

答案 1 :(得分:0)

尝试

this.setState({planets: [],
    starships: [],
    vehicles: [],
    people: [],
    films: []
})