如何在React Native中将状态恢复为默认状态?

时间:2017-08-04 07:35:23

标签: javascript react-native frontend

我在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是初始值。为什么会这样?我怎样才能保持他们的初始价值?我需要回到初始状态所有元素(包括两个数组)。

1 个答案:

答案 0 :(得分:0)

在构造函数中,您可以指定initialState的副本而不是原始对象,即:

this.state = Object.assign({}, this.initialState);

我不知道React是否足以知道这是否是重新初始化状态的最佳模式,但它应该有效。