反应原生AsyncStorage无法正常工作?

时间:2018-04-05 09:12:55

标签: react-native

用于设置我正在使用此第一个代码的项目。

let mediaPlayer = VLCMediaPlayer()

mediaPlayer.media = VLCMedia(url: "http://s2.yesstreaming.net:7091/stream")

// outputView is the view where you want to display the stream
mediaPlayer.drawable = outputView
mediaPlayer.play()

获取该项目,我正在使用此代码

           console.log(ACCESS_TOKEN);

                     console.log(typeof(ACCESS_TOKEN));

                     async function setToken() {

                     try {
                        await AsyncStorage.setItem('access_token', ACCESS_TOKEN);
                        } catch (error) {
                            console.log("token not set")
                        }
                     }
                     setToken();

我在第一段代码中获得的结果是

1a61b72b-ee83-43de-9cf9-3fa270ce694d

的字符串

但在获取代码时在控制台上一无所获。为什么?

4 个答案:

答案 0 :(得分:1)

你可以尝试这个:

使用此

设置项目
AsyncStorage.setItem('access_token', ACCESS_TOKEN);

使用此

获取项目
 try {
        AsyncStorage.getItem('access_token')
            .then((value) => {
                if (value) {
                   // you will get your access_token here
                }
            }).done();
    } catch (error) {
        console.log(error); // you will get error here
    }

答案 1 :(得分:0)

设置项目

AsyncStorage.setItem('access_token', ACCESS_TOKEN)
    .then(() => {  
       //your success code   
    })
    .catch((error) => {
      //your failure code
    })

获取物品

AsyncStorage.getItem('access_token')
  .then(access_token=> {
    //you will be getting the access token here
  })
  .catch(err => {
    //handle the error
  })

答案 2 :(得分:0)

也许这就是你的意图:

async function getToken() {

    try {
      const value = await AsyncStorage.getItem('access_token');
      if (value !== null){
        console.log(value);

        this.setState({ access_token: value });
      }
    } catch (error) {
      console.log( "Error retrieving data")
    }
}

componentWillMount(){
    getToken();
}

如果您的代码在使用AsyncStorage时遇到困难,那么只有在开发中才会出现一个众所周知的错误:https://github.com/facebook/react-native/issues/12830

他们只能绕过它,afaik,只是在你遇到困难时重启调试器

请记住,在componentWillMount期间设置状态不是正确的方法。您应该使用构造函数

答案 3 :(得分:0)

我的回答可能并不直接适用于您的情况,但是我遇到了与您对AsyncStorage所做的问题相同的问题,并且此问题一直困扰着您,因此这可能会对其他人有所帮助。 如本answer所述:

AsyncStorage仅将字符串作为值和键。

但是我不小心给了它null(您知道它被认为是一个对象),因此卡住了。因此,请检查是否将字符串值作为setItem的第一个和第二个参数传递。