不可变对象未设置为状态

时间:2019-05-02 21:36:10

标签: reactjs immutable.js

返回的不可变对象是正确的,但是this.setState({...})似乎没有设置它。

我尝试了各种设置状态的方法,但似乎都失败了。

  state = {
    onboarding3: fromJS({
      selection: {
        neverBeen: false,
        noConvert: false,
        both: false
      },
      noConvertOptions: {
        dynamicCreative: false,
        noPurchase: false,
        abandoned: false
      },
      bothOptions: {
        dynamicCreative: false,
        noPurchase1: false,
        noPurchase2: false
      }
    })
  };
  updateToggle = (field, option) => {
    return () => {
      const currentValue = this.state.onboarding3.getIn([field, option]);
      const onboarding3 = this.state.onboarding3.setIn([field, option], !currentValue);

      this.setState({ onboarding3 });
    };
  };
<Component
    roundedSwitchFunc={this.updateToggle("noConvertOptions", "dynamicCreative")}
    defaultChecked={onboarding3.getIn(["noConvertOptions", "dynamicCreative"])}
/>

1 个答案:

答案 0 :(得分:0)

这是事件冒泡和数据不同步的问题。这个组件的目的是让我的州模仿商店,但是由于每个组件都有自己的“商店”,因此无法准确地模仿Redux。