2017-12-06 16 views
0

私の反応ネイティブのアプリケーションでasyncstorage経由でデータを保存したいのですが、問題があります。私はそのようにそれを使用して:AsyncStorageは何も返しません

async componentDidMount() { 
console.log("Flag1"); 
await AsyncStorage.setItem('name', 'I like to save it.'); 
console.log("Flag2"); 
} 

しかし、いくつかの理由のために私は、「フラグ2」に達するカント、そして、私はのawaitの呼び出しからエラーやデータを取得しておりません。 同じ問題に直面してtry/catchを試してみました。

編集私はAsyncStorageはそれが動作を停止用途のカップルの後、私はエミュレータを開いた場合にのみ、私のために働くことに気づきました。

答えて

2

setItemとgetItemは非同期なので、結果を得るためにパラメータとしてコールバックを送信する必要があります。 like

componentDidMount(){ 
    AsyncStorage.setItem('name', 'I like to save it.',()=>{ 
     console.log("set item success") 
     AsyncStorage.getItem("name", (error, result)=>{ 
      console.log("get result " + result) 
     }) 
    }); 
} 
0

コードは機能するはずです。 私は、データがAsyncStorage.getItemを待つ使用して保存されていることを確認してみ

async componentDidMount(){ 
    await AsyncStorage.setItem('name', 'I like to save it.'); 
    console.log(await AsyncStorage.getItem('name')); // I like to save it. 
} 

を試してみました。

0

反応ネイティブのドキュメントhereで提案されているように、ベストプラクティスはtrycatchの式で囲んでいると思います。

_setAsyncStorage = async() => { 
    try { await AsyncStorage.setItem('@name', 'I like to save it'); 
    } catch (error) { 
    // Error saving data 
    } 
} 

コンポーネント内の任意のポイントからこの関数を呼び出すことができます。

関連する問題