如何解决Asyncstorage multiset不存储任何数据?

问题描述 投票:1回答:1

今天是个好日子,

我正在开发一个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)。

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

javascript reactjs react-native redux asyncstorage
1个回答
0
投票

显然问题出在虚拟机或其他东西上,因为它刚开始工作而没有我做任何事情。听起来很奇怪,很奇怪,但那就是发生了什么。

© www.soinside.com 2019 - 2024. All rights reserved.