javascript - componentDidMount 中的多个 setState

标签 javascript reactjs react-native render setstate

是否可以在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/

相关文章:

javascript - 改变嵌套对象

JavaScript slider 不起作用?

javascript - VSCode 如何使用 es6 mocha 单元测试和 jsx 文件进行调试

javascript - 如何在 firestore 中插入和自动删除不必要的或空的

Javascript : string to date

javascript - 谷歌和雅虎如何替换浏览器状态栏中的 URL?

javascript - ReactJS - 如何设置 React 日历样式

javascript - 仅在 Prop 更改时渲染子组件

react-native - 尽管接收到正确的数据,React Native FlatList renderItem 不会返回任何内容

javascript - 在react-native中嵌套firestore onSnapshot监听器?