【问题标题】:Why AsyncStorage getItem is returning null?为什么 AsyncStorage getItem 返回 null?
【发布时间】:2018-02-16 06:41:56
【问题描述】:
export const USER_KEY = "isLoggedIn";

export const phoneVerified = () => AsyncStorage.setItem(USER_KEY, 1);
export const userInfoVerified = () => AsyncStorage.setItem(USER_KEY, 2);

我已经使用上面的函数来存储值,下面的函数来获取值。

export const isSignedIn = () => {
  return new Promise((resolve, reject) => {
    AsyncStorage.getItem(USER_KEY)
      .then(res => {
          console.log("from isSignedIn : "+res); //res is showing null.
        if (res !== null) {
          resolve(res);
        } else {
          resolve(0);
        }
      })
      .catch(err => reject(err));
  });
};

为什么这总是返回 null?我正在尝试异步/等待,但仍然为空。我认为不知何故数据没有存储。

【问题讨论】:

    标签: react-native asyncstorage


    【解决方案1】:
    【解决方案2】:

    正如@Vishu Bhardwaj 回答的那样,AsyncStorage 只接受字符串。所以在这种情况下你可以使用JSON.stringify()JSON.parse()

    【讨论】:

      【解决方案3】:

      我被这个愚蠢的问题困扰了将近一个星期,没有其他在所有社区中建议的方法都对我有用,但后来我发现了一些由 react-native 构建的东西,它的 setState() 回调函数:@987654321 @。 所以我保证它是迄今为止唯一安全的方法的唯一方法是你在你的承诺中使用 setState() 函数以及你需要运行的所有东西,将它们放在一个函数上并为 setState() 回调调用它函数,这是您确保自己既不会获得 null 也不会调用该函数的唯一方法。这里我将提供一个示例,this.tokeToServer() 是我的函数,它用作回调函数。

      try {
            AsyncStorage.getItem('firebase_token',(err,item) => {
              if (item) {
                this.setState({
                  firebase_token: item,
                }),this.tokenToServer();
              }
            });
            } catch (error) {
            console.log("Error retrieving data" + error);
          }
      

      【讨论】:

        【解决方案4】:

        正如朋友 Abdu4 所说,我在 4 天内遇到了同样的问题,并搜索了不同的网站和论坛。尝试使用 async/await 和其他方法,即使您应该使用这些选项,但您完成并真正工作的是通过 setState 通过回调分配值

        try {
                AsyncStorage.getItem('TOKEN_KEY',(err,item) => {
                    if (item) {
                        setToken({
                            Token: item,
                        });
                    }
                });
            } catch (error) {
                console.log("Error retrieving data" + error);
            }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-12-10
          • 2022-01-14
          • 2017-01-11
          • 2019-01-30
          • 2018-09-16
          • 2018-04-14
          • 2022-12-26
          • 1970-01-01
          相关资源
          最近更新 更多