今天是个好日子,
我正在开发一个react-native项目,我使用AsyncStorage来保存一些不需要存在完全成熟数据库的数据。在这方面我使用此功能遇到了一些问题,主要是AsyncStorage的多集静态方法。我在redux动作中使用multiset,但由于某种原因,尽管正确调用了动作,它仍无效,而关于这一点的怪异部分是它与另一个动作一起工作。
这是有效的行动:
export const saveChosenCompany = (username, company) => dispatch => {
AsyncStorage.multiSet([
[`${username}.companyID`, company.id],
[`${username}.companyName`, company.name]
])
.then(() => {
dispatch({
type: SAVED_COMPANY,
payload: company
})
})
.catch(err => {
console.log(err);
dispatch({
type: SAVED_COMPANY,
payload: {
id: null,
name: null
}
})
})
}
这是无法正常工作的操作:
export const saveConfigs = (configs) => dispatch => {
console.log("action", configs)
AsyncStorage.multiSet([
[`updateStockpile`, configs.stockpile],
[`updateData`, configs.data],
[`emptyPhone`, configs.emptyPhone],
[`language`, configs.language],
[`autoUpdate`, configs.autoUpdate],
])
.then(() => {
console.log("set async...")
dispatch({
type: SAVE_CONFIG,
payload: configs
})
})
.catch(err => {
console.log(err);
console.log('no async set...')
})
}
这是我在我的组件中实现它的方式:
saveChangedConfigs = async () => {
this.props.saveConfigs({
stockpile: this.state.updateItem.toString(),
data: this.state.updateData.toString(),
delete: this.state.emptyFiles.toString(),
autoUpdate: this.state.autoUpdate,
language: this.state.language
})
}
我从本机选择器的onChange prop,本机开关和库中具有相同名称的react-native-numeric-input自定义组件中调用此方法。
我希望有些人帮助我找出为什么multiset不工作(我通过获取值测试它们并且它们都是null)。
提前感谢大家的时间和麻烦。
显然问题出在虚拟机或其他东西上,因为它刚开始工作而没有我做任何事情。听起来很奇怪,很奇怪,但那就是发生了什么。