2017-07-21 3 views
0

私はAsyncStorageで作業しています。値を "facoltà"に保存し、this.setStateを呼び出す "promessa"に保存する必要があります。React Native - AsyncStorageは文字列を取得しようとするとnullを返します。

constructor(props){ 
    super(props) 
    AsyncStorage.setItem("facoltà","PROFS.json") 
} 
componentWillMount(){ 
    AsyncStorage.getItem("facoltà").then((value)=> 
    { 
    console.log(value); // the console returns me PROFS.json so I thought it was working 
    this.setState({promessa:value}) 
    }): 
    var dataObjects=require("../JsonLists/"+this.state.promessa) // but here this.state.promessa returns me null 
} 

問題はthis.state.promessaではなく、「PROFS.json」の「ヌル」私を返し、私はそれを解決する方法を見つけ出すことができないということです。私は、そのコードを書きました。 ご回答いただきありがとうございます。

+0

を必要とthis.CallのMethodeのようにしてみてください: ' "../ JsonLists /" +本(必要.state.promessa) '。動的にファイルをインポートすることはできません。理由を理解するには、[この回答](https://stackoverflow.com/a/43517912/5555458)をご覧ください。 –

+0

ありがとうございました、私はAntoine Grandchampが言ったように私が必要としていた要求の誤りを修正しました。それから、あなたが言ったように、チェーンにデータオブジェクトの問題を修正しました。ありがとうございました。 –

答えて

0

AsyncStorage.getItemは約束を返します。したがって、thenでコールバックで解決されます。つまり、約束が解決される前に次の行var dataObjects=require("../JsonLists/"+this.state.promessa)が実行されます。

thenコールバック内に行を配置し、メソッドですぐにdataObjectsが必要な場合は、デフォルトの初期値を設定する必要があります。

0

タイミングの問題だと思います。あなたは、var dataObjectsがそれを要求した後に状態を設定している.thenで約束をしています。

あなたの.thenコード内にvar dataObjectsを置こうとしましたか?

0

コンポーネントWillMountは、コンストラクタ内のsetItem Promiseの後にgetItem Promiseを終了しません。

試してみてください。

componentWillMount(){ 
AsyncStorage.setItem("facoltà",PROFS.json) 
} 

render(){ 
... 
    AsyncStorage.getItem("facoltà").then((value)=>alert(value)); 
... 
} 

これはあなたのデータを警告する必要があります。

0
async myMethode() { 
AsyncStorage.getItem("").then((value)=>alert(value)); 

}

あなたがこの方法を使用してファイルをインポートすることはできません、それは

+0

asyncキーワードを使用すると、非同期でデータを取得できます –

関連する問題