gpt4 book ai didi

ios - React Native - 开关不改变值

转载 作者:行者123 更新时间:2023-11-29 11:47:43 25 4
gpt4 key购买 nike

目前,我的代码保留我放入 Switch 中的任何默认值而不更改它。 onValueChange 被触发,我从中获得了正确的值,但无论我做什么,开关都会移动并返回到默认位置,就像没有更新状态一样。

我要使用的主要代码是这个:

 <Switch style={styles.select} value={this.state.banks[rowData.code].status} onValueChange={(newValue) => this.saveValue(rowData,newValue)}/>


saveValue = (rowData,newValue) => {
//var row = rowData[Object.keys(rowData)[0]];
rowData.status = newValue;
this._sh.set('@Banks:'+rowData.code,newValue.toString()).then(
(result) => {
this._banks[rowData.code].status = newValue;
this.setState({
banks: this._banks
});
}
);
return newValue;
}

起初我认为这是一个非常复杂的状态场景,所以我也尝试在行外和常规 View (而不是数据源)内使用 Switch。我还尝试使用默认实现,正如您在 Switch 的文档示例中看到的那样,但也不起作用。

我正在试用 iPhone 6s 模拟器和真实的 5s 设备。还是一样的行为。

我正要认为这是 RN 中的一个错误,但没有发现任何相关的东西,我正在失去理智,因为这应该很容易。

最终,我得到的是一个包含银行列表的 JSON 文件,用户可以在其中选择是否启用,我正在使用该数组存储值并使 Switch 从那里获取状态。 _sh 是 AsyncStorage 的 StorageHelper 包装器,但我也从代码中删除了那部分,但仍然是同样的问题。

任何意见表示赞赏。

最佳答案

好吧,我会被诅咒的,因为我将它放在 ListView 中并且我正在更新同一个对象而不是创建副本。此代码有效:

saveValue = (rowData,newValue) => {
//var row = rowData[Object.keys(rowData)[0]];
var banksAux = JSON.parse(JSON.stringify(this.state.banks));

rowData.status = newValue;
this._sh.set('@Banks:'+rowData.code,newValue.toString()).then(
(result) => {
banksAux[rowData.code].status = newValue;
this.setState({
banks: banksAux,
dsBanks: this.state.dsBanks.cloneWithRows(banksAux)
});
}
);
return newValue;
}

非常难看,但显然我做了一些研究,这是要走的路。

关于ios - React Native - 开关不改变值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42775273/

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