私は、それぞれが何をするかを変えることができる仕切りを使っていくつかの「ペイン」を持つ派手なUIを持っています。 To-doリストとシンプルなテキストエディタの2つのコンポーネントがあるとします。柔軟なUIを作成するために、各ペインにあるコンポーネントを変更できるようにしてください。たとえば、左側のペインをテキストエディタからTo-Doリストに変更することができます。私が親要素Pane
を持っていると仮定して、どのように私はその子供の1つを別のものに置き換えることができますか?ReactJS動的に子を置き換えます
<Pane>
<TextEditor /> /* I want to replace that with a <ToDoList /> when I press a button */
<SomeOtherComponentOnTheRight />
</Pane>
私は(this.state.currentChildren
など)<Pane />
の状態でReact.Children.toArray(this.props.children)
を格納し、そこに要素を交換するが、何らかの理由で私は<Pane />
で<TextEditor />
のインデックスを取得する方法を見つけることができません試してみましたいくつかの理由でthis.props.children
が子どもの小道具を保存していないので、私はそれを介してデータを送信することができないので、this.state.currentChildren
です。
私はこれを複雑にしてしまって申し訳ありませんが、コンポーネントの子を動的に変更する方法を知りたいだけです。
うそれは再レンダリングされるたびに新しい ' '要素を作成しますか?もしそうなら、それはステートフルなコンポーネントなので問題になる可能性があります。 –
Tobsta
@Tobstaはいそうです。コンポーネントの状態を維持したいのであれば、コンポーネントを切り替えるのではなく、コンポーネントのstyle属性で '{hidden:!app.state.showEditor}'を切り替えたいのですか?それはコンポーネントを保持しますが、可視性を切り替えます。 – Aron