大家好,
我正在从事一个本机反应项目,在这里我使用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
})
}
我从同一个名称的库中的本机选择器,本机开关和react-native-numeric-input自定义组件的onChange属性中调用此方法。
我希望这里能帮助我弄清楚为什么多集不起作用(我通过获取值对其进行了测试,而它们全为空)。
提前感谢大家的时间和麻烦。
答案 0 :(得分:0)
显然,问题出在虚拟机之类,因为它在我不做任何事情的情况下就开始工作。听起来很奇怪,但是很奇怪,这就是发生的事情。