Md Nahid Hasan
Md Nahid Hasan

Reputation: 47

react native AsyncStorage not working?

for setting the item i am using this first code.

           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();

for getting the item , i am using this code

componentWillMount(){


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")
    }
  }

  getToken();

the result i am getting in first code is

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

string

but getting nothing at console at getting code . why ?

Upvotes: 1

Views: 2296

Answers (4)

Gandalf
Gandalf

Reputation: 3257

My answer might not directly apply to your case, But I had the same problem as you did with AsyncStorage and It was getting stuck, so this might help other people. As stated in this answer:

AsyncStorage only takes string as a value and key.

But I was accidentally giving it null (which as you know is considered an object) so it got stuck. So check if you are passing a string value as both the first and second argument to setItem.

Upvotes: 0

nicecatch
nicecatch

Reputation: 1737

Maybe this is what you intended:

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();
}

If instead your code is getting stuck while working with AsyncStorage, there's a well known bug reproducible only in development: https://github.com/facebook/react-native/issues/12830

They only way to bypass it, afaik, it is just to restart the debugger when you get stuck

Remember that setting state during componentWillMount is not the correct way to do it. You should use the constuctor for that

Upvotes: 0

Patel Dhara
Patel Dhara

Reputation: 886

You can try this one:

set item using this

AsyncStorage.setItem('access_token', ACCESS_TOKEN);

get item using this

 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
    }

Upvotes: 1

Pavithra Purushothaman
Pavithra Purushothaman

Reputation: 663

To set the item

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

To get the item

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

Upvotes: 0

Related Questions