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

时间:2019-04-25 11:45:01

标签: javascript reactjs react-native redux asyncstorage

大家好,

我正在从事一个本机反应项目,在这里我使用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属性中调用此方法。

我希望这里能帮助我弄清楚为什么多集不起作用(我通过获取值对其进行了测试,而它们全为空)。

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

1 个答案:

答案 0 :(得分:0)

显然,问题出在虚拟机之类,因为它在我不做任何事情的情况下就开始工作。听起来很奇怪,但是很奇怪,这就是发生的事情。