React Native中的AsyncStorage单例

时间:2019-09-02 13:35:56

标签: javascript react-native asyncstorage

我想创建一个单例,该单例将收集应用程序周围所需的所有数据。也许这种方法是错误的,那么请纠正我。

现在我的Singleton类具有简单的代码:

import { AsyncStorage } from 'react-native'

export default class DataManager {
    static myInstance = null

    stringsArray = null

    static instance() {
        if (DataManager.myInstance == null) {
            DataManager.myInstance = new DataManager();
        }

        return this.myInstance;
    }

    async getStringsArray() {
      if (this.stringsArray == null) {
        let strings = await AsyncStorage.getItem('stringsArray')
        this.stringsArray = JSON.parse(strings)
      }
        return this.stringsArray
    }

    async setStringsArray(strings) {
        this.stringsArray = strings;
        await AsyncStorage.setItem('stringsArray', JSON.stringify(strings))
    }
}

这就是我要调用的getter和setter方法:

DataManager.instance().setStringsArray(["abc", "def"])

let stringsArray = DataManager.instance().getStringsArray()

很遗憾,如果我设置了某些内容,以后将无法收到它。在这种情况下,我很乐意为您提供帮助

2 个答案:

答案 0 :(得分:0)

如果您正在寻找在各个组件之间或通过App共享数据的方法,请尝试redux https://blog.cloudboost.io/getting-started-with-react-native-and-redux-6cd4addeb29

答案 1 :(得分:0)

我认为您想在AsyncStorage上存储一些参数,但是您不想每次都导入并将其用于将参数保存在手机存储中。对于本机应用程序,常见的方法是使用redux-persist库。通过使用该库,您可以保存Redux存储中的每个参数。您可以在https://github.com/rt2zz/redux-persist上了解更多信息。您可以将所需的每个参数放在redux-persist whitelist中,并将其保存在手机存储中。

我希望它能解决您的问题。如果这是您想要的解决方案,请给我投票:)