SetState secound参数回调函数不起作用

时间:2019-07-03 10:19:05

标签: javascript reactjs

我的问题取决于我无法调用setState react函数的第二个参数。

我确实知道它是异步函数,它有自己的规则,但是出了点问题,我被困在这里

constructor(props){
    super(props);
    this.state = {
        mainArray: []
    };
    let array=[];
    for(let i=0;i<20;i++){
        let children=[];
        for(let j=0;j<20;j++){
            children.push(<Pool key={`${i}${j}`} row={`${square1}`}/>);
        }   
    array.push(<div key={`${i}`}>{children}</div>);     
    }
    this.setState({mainArray: array},function (){console.log('message');}); 
    console.log(this.state.mainArray);
}

该消息未在控制台中显示,最后一行仅显示空数组

1 个答案:

答案 0 :(得分:3)

问题可能是在构造函数中调用setStatesetState触发组件的生命周期,而构造函数已经是该组件的一部分。所以也许您在弄乱生命周期。

setState中调用componentDidMount会发生什么?

此外,在构造中,您不需要setState 。在构造函数中,并且仅在构造函数中,您可以直接编写状态:

constructor(props){
    super(props);

    const array = [];

    for(const i = 0; i < 20; i++){
        let children = [];
        for(let j = 0; j < 20; j++){
            children.push(<Pool key={`${i}${j}`} row={`${square1}`}/>);
        }   
        array.push(<div key={`${i}`}>{children}</div>);     
    }

    this.state = { mainArray: array };

    console.log(this.state.mainArray);
}
相关问题