最近Reactの学習を開始しましたが、ウィザードコンポーネントを作成しようとしています。 は、もともと私はそれがこのように使用することができることを描いた:Reactでウィザードコンポーネントを作成する最善の方法
<Wizard isVisible={this.state.isWizardVisible}>
<Page1 />
<Page2 />
</Wizard>
私はプロパティ、子供(ページ1、ページ2)への偶数成分を抽出したいとき(まだOOPの考え方を持つ)問題に走り始めましたウィザードの設定/上書き(タイトル、フッターコンポーネントなど)。
これはもちろん、Wizard.renderではコンポーネント自体にアクセスできないため、これは実行できません。
次に、私はthisウィザードを使ってrepoを見つけました。レポ内のコンポーネントは、ウィザードの現在のステップを設定するjavascriptオブジェクトであり、Reactコンポーネントを返すコンポーネントプロパティを含むStepsの配列で構成されます。
このアプローチは確かに問題を解決しますが、別の方法で実行できるかどうか、または各ページ/ステップコンポーネントが動作をカプセル化し、他のものをカプセル化しないように、途中で(レポのように)。
答えをありがとう。私は、親にすべての情報を持ってもらうという考えを得るが、私の場合、現在のページに基づいて親のタイトルに影響を与えたい。私はこれがその哲学に反する情報の流れを逆転させるだろうが、現時点では解決策を見ていないことを知っている – user1294431
本当にする必要がある場合は、親/祖先コンポーネントのローカル状態を使用して値を保存します。また、親/祖先コンポーネントには、この状態を変更する関数があります。この関数を子どもの小道具として渡し、必要に応じて呼び出すだけです。もう一つ、このパターンを最小限に抑えて、いくつかの頭痛を軽減してください: ' CustomComponent>'。 ChildからCustomComponentへのレンダー機能のレンダリングを活用することは、長期的にはより簡潔なアプローチです。 –
dannyjolie
これは私の言うことを説明する助けになるかもしれません:https://jsfiddle.net/dannyjolie/627ofoqo/これは、非常に単純化された通常のデータフローパターンです。すべてのコンポーネントはアプリ内のすべてのものにアクセスできる可能性があります。どこからでも何かを変更する必要がある場合は、changeStore()を呼び出してください。 – dannyjolie