之前React setState后在另一个函数调用state的值没有更新:
// init state.type = 'new'; activeMenu(type) { // type = top if (type == this.state.type) return; this.loadList(type); } loadList(type) { this.setState({ items: [], type: type }); ......... // type is top, but this.state.type still is new }
改进后的setState是这样的:
// 使用setState的回调函数即可解决 activeMenu(type) { if (type == this.state.type) return; this.setState({ items: [], page: 1, type: type, isLoading: false, isLoadedFinished: false }, function() { this.loadList(); }); } loadList() { // 这样我们就可以愉快及时的使用 state里面的值 。。。 。。。 }