2016-12-01 7 views
0

リアクトは不変性の周りに設計されているので、それは基本的にコンポーネントの2つの変更可能なプロパティに依存するということは少し奇妙に思えます。 render(props, state)と実装した場合、他の関数の状態を変更しようとする誘惑が減り、renderが純粋に機能的な操作であるという概念にもっときちんと適合できます。なぜReactは、レンダリングするパラメータではなく、コンポーネントのプロパティとプロパティを作成しますか?

私はReactをより効果的に使うことができる設計の決定を理解しているように感じます。

+0

*他の機能の状態を変更しようとする誘惑が軽減されます。* なぜですか? – lustoykov

+0

私は、あなたが状態を維持するために1つ以上の高水準のコンポーネントを持っていると思っています。アプリケーションの状態をより高いレベルで維持し、コンポーネントだけを通過させる、つまりすべてのコンポーネントがステートレスであるべきであるというあなたの考えは? – aw04

+0

また、小道具は不変です。あなたの例では、州と小道具の違いは何ですか?なぜあなたは両方を必要としますか? – aw04

答えて

1

propsおよびstateは不変として扱われる。 props are read-onlyであり、コンポーネントの状態の更新は、変更が上書きされないように、setStateを使用して行う必要があります。

この方法は、永続的/変化する状態を処理する必要がある純粋な関数であるという概念を持つ必要はありません。 ステートフルステートレス(機能)のコンポーネントにあなたのコンポーネントを抽象化

は、あなたは、ダム/ピュア/プレゼンテーションコンポーネントと反応させるために探している場合は、に見ることができるものです。

あなたはあなたのアプリケーションの構築、純粋に機能的な構成要素が、いずれかを構築することができ:

  • を、あなたの機能コンポーネントに渡すために状態変化を管理する方法を見つける必要があるだろう

  • アプリケーションがそうです複雑なロジックで状態が変化したり状態が変化したりしないように簡単です。

+0

私は知っていますが、それは本当に質問に答えるものではありません。なぜそれらは、レンダリングする引数ではなく、コンポーネントのプロパティとして実装されます。 –

+0

特定の小道具/州のすべての変更をレンダリングしたくない場合があります。さらに、レンダリングメソッド内から状態を更新したくない場合もあります。状態を更新する非同期呼び出しを考えてみましょう。あなたはそれをレンダリングメソッドに入れますか? – Pineda

関連する問題