gpt4 book ai didi

javascript - 动态更新对象中的 Getter 函数

转载 作者:行者123 更新时间:2023-12-03 00:45:35 24 4
gpt4 key购买 nike

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

this.state = {
selectedProvider: '',
selectedPort: '',
selectedNetwork: '',
networks: {
MainNet: {
disabled: false,
},
aTestNetwork: {
get disabled() {
return this.selectedProvider === 'aProvider';
},
},
}

我正在使用 this.setState() 通过 onClick 函数更新 selectedProvider。但是,this.state.selectedProvider 的值似乎并未更新名为 disabled 的 getter 函数返回的值。

我正在使用 this.state.networks 在下拉菜单中列出网络,我的目的是根据 this.state.selectedProvider 的值动态地将它们列为禁用或启用,如上所述,看起来 getters 值只生成一次。

如何让getter的返回值动态更新?

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

set provider(prov) {
this.selectedProvider = prov;
},
get disabled() {
return this.selectedProvider === 'aProvider';
},

最佳答案

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

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);

关于javascript - 动态更新对象中的 Getter 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53262426/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com