在对象中动态更新Getter函数

时间:2018-11-12 12:41:33

标签: javascript reactjs object redux getter

在我的构造函数中,我将状态设置为

npm start http

我正在使用DateVal = "01/10/2018" DateVal = Format(DateVal, "d-mmm-yy") ActiveSheet.PivotTables("PivotTable41").PivotFields("A$Period Name"). _ ClearAllFilters ActiveSheet.PivotTables("PivotTable41").PivotFields("A$Period Name"). _ CurrentPage = DateVal 通过onClick函数更新selectedProvider。但是,this.state.selectedProvider的值似乎没有更新名为this.state = { selectedProvider: '', selectedPort: '', selectedNetwork: '', networks: { MainNet: { disabled: false, }, aTestNetwork: { get disabled() { return this.selectedProvider === 'aProvider'; }, }, } 的吸气剂函数返回的值。

我正在使用this.setState()在下拉菜单中列出网络,我的目的是根据this.state.selectedProvider的值将其动态列出为已禁用或已启用,并且看起来像getters值仅生成一次。

如何获取要动态更新的getter的返回值?

编辑:能够使用setter正确地为this.selectedProvider分配一个值,并在调用getter之前调用它。

disabled

1 个答案:

答案 0 :(得分:1)

由于getter中的this引用了它的直接宿主对象,因此最好的选择是绑定上下文:

const self = this;
this.state = {
  selectedProvider: '',
  selectedPort: '',
  selectedNetwork: '',
  networks: {
    MainNet: {
      disabled: false
    },
    aTestNetwork: {
      get disabled () {
        return self.state.selectedProvider === 'aProvider';
      }
    }
  }
};
// test:
console.log(this.state.networks.aTestNetwork.disabled);
this.state.selectedProvider = 'aProvider';
console.log(this.state.networks.aTestNetwork.disabled);