2017-02-09 20 views
1

後、私はこのようになります減速を持っているコンポーネントには反映されません
1. mapStateToPropsの状態には、login.fetching: true
が含まれています。2.還元剤に作用をディスパッチした直後のコンポーネントthis.props.login.fetchingには、false
3.成分render()の方法this.props.login.fetchingtrueです。

なぜ2.それでもまだfalseですが、ここでは何が欠けていますか?mapStateToPropsは、アクションのディスパッチ

アクション派遣:

onLoginPress =() => { 
    this.props.dispatch(loginUser(this.state.email.trim(), this.state.password.trim())) 
console.log(this.props); 
+0

具体的には、アクションをディスパッチしている場所のコードを表示することができます – bencrinkle

+0

更新された質問 – 1110

+2

ディスパッチ直後に小道具が状態の変化を反映しているとは思わないでしょう。それは再レンダリングにしか現れませんでしたが、それはそのサウンドによってあなたが見ているものですか? – bencrinkle

答えて

2

答え、あなたは本当に簡単な取得されfalse直後ますdispatchそうもあなたprops変更しますあなたのconsole.log(this.props)呼び出される前に、したがって、それためのJavascriptのasync natureのアクション、前の値が表示されます。しかし、render()関数は、レデューサーの変更から状態を呼び出すと呼び出され、更新された値が表示されます。

あなたはPromiseこの

onLoginPress =() => { 
    this.props.dispatch(loginUser(this.state.email.trim(), this.state.password.trim())).then(() => { 
    console.log(this.props); 
}) 

を使用

派遣ではあり必要なもの、私はそれを正しく説明することができた、願っています。

+0

あなたはそれを完璧に説明しました。私はディスパッチで約束を使用できることを知らなかった。 – 1110

+0

ありがとう、喜んで助けてくれた:) –

関連する問題