2017-11-01 1 views
0

私はネイティブ反応に新たなんだ欲しいものをやっていないことができると私は問題がcomponentDidMountにAsyncStorageは、それは非同期だと私は

私は「AsyncStorage」を使用しています3日以上^ _ ^私から取る直面していますそれは返すのURL「?82/wasily/MyDealOffer.phpユーザーID = 4:// ****のhttp」を入れているとき、非同期はまだ値

var data = {foo:this.state.parmstudentid}; 
fetch(`http://****:82/wasily/MyDealOffer.php?UserID=${data.foo}`, 

を返さないので、それは、init値を使用しています正しいリストですが、私が$ {data.foo}を使用しているときには、それは "0"をAPIに送信しているので、リストを返さない(状態を作成するときのデフォルト値)

私は私のparmstudentid状態のための新たな価値をもたらすために、このコードを使用している

AsyncStorage.getItem("UserID").then((value) => { 
this.setState({parmstudentid: value}); 
}).done(()=>{ 
this.setState({AsyncResult:true}) 
}) 

私はAsyncStorageラン

答えて

1

おそらく、この権利のような何かをしたいまで、すべてのコードの実行を停止することができますか?

AsyncStorage 
    .getItem("UserId") 
    .then(val => { 
    this.setState({ parmstudentid: val }); 
    fetch(`http://****:82/wasily/MyDealOffer.php?UserID=${val}`) 
    // etc 
    }) 

setState部分は、一度に値を使用するだけでは必要ない場合もあります。さらに複雑なローディングアクションセットが必要な場合は、次のタイプのパターンに従うことができます。

export default class App extends Component { 
    componentWillMount(){ 
    AsyncStorage 
     .getItem("UserId") 
     .then(val => this.setState({ parmstudentid: val, loading: false })); 
    } 

    componentWillUpdate(props, state){ 
    if(!state.loading){ 
     // make your callout here 
    } 
    } 

    render() { 
    return (
     <View /> 
    ); 
    } 
} 
関連する問題