問題: 當我使用this.setState和我在回調中輸出狀態時,它根本不會改變,但是當我將setstate嵌套在setstate中時,它將工作正確。ReactJS setState只適用於setState嵌套
舉例: 這不起作用 -
this.setState({
data: newData
});
這並不工作 -
this.setState({
data: newData
},() => {
this.setState({
data: newData
});
});
這是否有東西做的方式作出反應批次狀態更新?
這是實際的代碼,其中setstate不工作,除非我嵌套它(我試過評論所有在這個函數中,並使用setState設置coursePage爲null,但它不工作,除非它嵌套) :
cancelCPIndexChange(index){
let temp = this.state.coursePages;
this.hideEditingCoursePage(index);
let canceledIndex = temp[index];
temp = temp.slice(0, index).concat(temp.slice(index+1));
temp = temp.slice(0, parseInt(canceledIndex.course_pageindex)-1).concat(canceledIndex).concat(temp.slice(parseInt(canceledIndex.course_pageindex)-1));
this.setState({
coursePages: temp
},() => {this.setState({
coursePages: temp
});
});
}
這是關於相同的水平cancelCPIndexChanges即能修改coursePages的狀態的另一功能:
showEditingCoursePage(index){
let temp = this.state.coursePages;
temp[index].editingCoursePage = true;
this.setState({
coursePages: temp
});
}
這些功能是在course.js。這兩個函數都傳遞給CoursePages.js,然後傳遞給CoursePage.js。
不,'this.setState'總是有效的。你能在小提琴中重現你的問題嗎? –
你如何調用set狀態?這可能是一個「這個」範圍問題。 –
我懷疑我可以在小提琴中複製這個問題。除了這個特殊的函數外,使用setState的其他函數在相同的作用域級別上工作得很好。我也將功能綁定到了正確的級別。 – Recur