gpt4 book ai didi

javascript - componentDidMount 中的多个 setState

转载 作者:行者123 更新时间:2023-11-29 10:59:03 26 4
gpt4 key购买 nike

是否可以在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 没有问题,但不推荐,因为它每次都会触发渲染。尽管您可以在 componentDidMount 的末尾使用一个 setState

例如:

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);

// 2nd setState
var index = 0;
for (var i = 0; i < data.length; i++) {
//somecode
}
//this.setState({ index2 : index});
this.setState({
index,
index2: index,
key1: value1,
})
console.log("this.state.index2" , this.state.index2);
})
}

关于javascript - componentDidMount 中的多个 setState,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50829402/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com