我的问题取决于我无法调用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);
}
该消息未在控制台中显示,最后一行仅显示空数组
答案 0 :(得分:3)
问题可能是在构造函数中调用setState
。 setState
触发组件的生命周期,而构造函数已经是该组件的一部分。所以也许您在弄乱生命周期。
在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);
}