【问题标题】:how to solve Asyncstorage multiset not storing any data?如何解决 Asyncstorage 多集不存储任何数据?
【发布时间】:2019-09-14 20:14:44
【问题描述】:

大家好,

我正在做一个 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 属性、本地开关和同名库中的 react-native-numeric-input 自定义组件中调用此方法。

我希望这里的一些人能帮助我弄清楚为什么多重集不起作用(我通过获取值对其进行了测试,但它们都是空的)。

提前感谢大家的时间和麻烦。

【问题讨论】:

  • 你在控制台中得到了什么?
  • 尝试在AsyncStorage.multiSet中使用async/await
  • 你怎么打电话给saveChosenCompany(哪个有效)?
  • @Vencovsky 我得到了在多集之前执行的 console.log 并且不能在 redux 操作中使用异步等待,因为 redux 不支持它,或者至少这是我得到的错误时我试过了
  • @Dan 我通过调用 this.saveChosenCompany() 在选取器 onValueChange 方法中使用它

标签: javascript reactjs react-native redux asyncstorage


【解决方案1】:

显然问题出在虚拟机之类的东西上,因为它刚刚开始工作而我没有做任何事情。听起来很奇怪,很奇怪,但这就是发生的事情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-07
    • 1970-01-01
    • 1970-01-01
    • 2011-08-28
    • 2020-03-09
    • 2017-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多