【发布时间】:2018-11-22 13:45:58
【问题描述】:
componentDidMount() 中是否可以有多个setState?
我有这种代码结构,每个控制台日志实际上都给了我正确的值。
constructor(props) {
super(props);
this.state = {
index : 0,
index2 : 0
};
}
componentDidMount() {
fetch(url)
.then(response => response.json())
.then(data => {
// 1st setState
var index = 0;
for (var i = 0; i < data.length; i++) {
//somecode
}
this.setState({ index : index});
console.log("this.state.index" , this.state.index); // value: 1
// 2nd setState
var index = 0;
for (var i = 0; i < data.length; i++) {
//somecode
}
this.setState({ index2 : index});
console.log("this.state.index2" , this.state.index2); // value: 2
})
}
render() {
value1={this.state.index}
value2={this.state.index2}
}
但是,当我在render() 中调用它时,它似乎仍在使用构造函数中设置的初始值。
如何处理这种方法?谢谢!
【问题讨论】:
-
它们中的每一个都在触发重新渲染,因此这是一种反模式。你最好把它们打包成一个
setState -
你想通过这个流程实现什么?
-
已经在下面得到了答案。再次感谢!
-
祝我好运!有人只是投了反对票,作为 Javascript 的初学者,我认为通过提出如此具体和伟大的问题来更好地了解事物是件好事,我得到了答案:D
标签: javascript reactjs react-native render setstate