当我执行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
);
};
希望解决此错误
答案 0 :(得分:1)
问题
这里的问题是您已将setState
从function
覆盖到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: []
})