2017-02-24 16 views
0

私はそれならば、私は思っていた作品を接続「Reduxの方法を理解しようとしています:Reduxのは、接続してmapStateToPropsは

  1. は毎回新しい小道具 または
  2. 更新既存のコンポーネントのと状態の変更を新しいコンポーネントを作成します状態

これは後者の場合、これは不変の小道具のリアクションの哲学に反していないのですか? これはどのようにして小道具を更新しますか?

答えて

4

不変の小道具の理念は、コンポーネント自体の内部から小道具を更新することを想定していないことを意味します。親コンポーネントから新しいプロパティ値をコンポーネントに渡すことができます。そのため、componentWillReceivePropsメソッドが存在します。

基本的に反応コンポーネントは、小道具を受け取り、HTMLをレンダリングします。コンポーネントでローカル状態を使用できますが、Reduxを使用する場合は通常これは必要ありません。 Reduxは、単一の状態オブジェクト内のすべての状態を管理し、connectメソッドを使用して、グローバルRedux状態の一部をリアクションコンポーネントに '接続'できます。それはそのコンポーネント内の小道具として利用できるようになります。

あなたの質問に答えるには、答え1も2も正しくありません。 connectを使用してコンポーネントに状態を接続すると、その状態を小道具として渡します。コンポーネントには状態はありません(独自のローカル状態を記述しない限り)。 redux状態の対応する部分が変更されると、これらの小道具が更新されます。

+0

あなたのすばやい回答にお応えします。だから私はReactを既存のアプリケーションに統合しているので、Reduxは今のところ選択肢ではないので、コンポーネントの外からの小道具の更新を模倣する適切な方法は何でしょうか? –

+0

リアクションコンポーネントをレンダリングするときはいつでも、ダイナミックプロップ(vaiableから)を渡すことができます。たび小道具がこの順に呼び出されます、あなたのコンポーネントの次のメソッドを変更します。 1) 'componentWillReceiveProps()' 2) 'shouldComponentUpdate()' 3) 'componentWillUpdate()' 4) '')(レンダリング 5) 'componentDidUpdate()' 基本コンポーネントのレンダリングメソッドのみが必要です。 –

+0

私が正しくあなたを理解していれば、あなたのレンダリングメソッドで「新しいコンポーネントを作成する」ことができます。それが既存のものであれば、反応は単にその小道具を更新しますか? –

関連する問題