2017-03-26 20 views
0

私は状態を管理するためにReduxを使ってSPAを書いています。 reduxストアに接続されたロジックコンポーネントがあり、それは子コンポーネントを持ち、子コンポーネントにpropsによって 'posts'ステートを転送します。子コンポーネントのレンダリング関数:反応還元の状態について

const {onShow,posts} = this.props; 

これはうまくいきます。投稿だけがレビュックスストアで変更されます。しかし、そのcomponentDidMount()関数または構築関数では、投稿はreduxストアでは変更されないので、どのように起こる可能性がありますか?

componentDidMount(){ 
    const {posts} = this.props; 
    console.log(posts) 
} 

ここには、完全なコンポーネントcodeがあります。 ListsコンポーネントとPostsコンポーネントに関するものです。

+3

、あなたはうん、そうだね 'componentWillReceiveProps(nextProps){はconsole.log(nextProps.posts}' –

+0

として新しい小道具を得ることができますが、投稿はcomponentDidMount機能に変更はありませんなぜ私にはわかりません – laoqiren

+2

componentDidMountは小道具の変更ではトリガしません。最初のrender.https://facebook.github.io/react/docs/react-component.html –

答えて

0

あなたの投稿からわかるように、なぜあなたがcomponentDidMount()内で状態更新の反映を見ることができないのか疑問に思っています。

これは、反応コンポーネントのインスタンスを作成してDOMに挿入するときに、componentDidMount関数が呼び出されたためです。これは、反応コンポーネントのライフサイクルの実装段階で呼ばれます。

Reduxの状態更新のあなたの反射を見ることができるようにするには、次のような更新ステージで呼び出される関数を使用する必要があります。

  • componentWillReceiveProps()
  • componentDidUpdate()
  • shouldComponentUpdateを()

さらに詳しい情報を入手するには、コンポーネントのライフサイクルドキュメントを確認してください:

https://facebook.github.io/react/docs/react-component.html

関連する問題