我在React Native中有这段代码
class Home extends Component {
constructor(props) {
super(props);
this.initialState={
backGroundColor: '#ffffff',
visible:[true,true,true,true,true,true],
progress:0,
numbers: shuffle([1,2,3,4,5,6])
}
this.state = this.initialState;
}
_resetState(){
this.setState(this.initialState);
}
_change(teste,op){
if(op==this.state.numbers[0]){
let array = this.state.visible;
switch(op){
case 1:
array[op-1] = false;
break;
case 2:
array[op-1] = false;
break;
case 3:
array[op-1] = false;
break;
case 4:
array[op-1] = false;
break;
case 5:
array[op-1] = false;
break;
case 6:
array[op-1] = false;
break;
}
this.setState({backGroundColor: teste,visible:array,progress: this.state.progress+0.16666666666666});
this.state.numbers.splice(0,1);
}else{
console.log(this.initialState);
}
}
当我执行console.log(this.initialState)时,数组中的数字和可见状态不是初始值,而backGroundColor和progress是初始值。为什么会这样?我怎样才能保持他们的初始价值?我需要回到初始状态所有元素(包括两个数组)。
答案 0 :(得分:0)
在构造函数中,您可以指定initialState的副本而不是原始对象,即:
this.state = Object.assign({}, this.initialState);
我不知道React是否足以知道这是否是重新初始化状态的最佳模式,但它应该有效。