2016-12-07 24 views
2

子要素をReactコンポーネントに追加するにはどうすればよいですか。 this.props.childrenは読み取り専用のようですので、直接変更することはできません。子要素をReact要素に追加する

はのは、私が

var myComponent = <MyComponent someProp="foo"><h1>heading</h1><h2>another heading</h2></MyComponent> 

を持っていると言うと、私はそれに3番目の子として<p>some text</p>追加したいと思います。

私はこれを達成したいと思います:結果は

<MyComponent someProp="foo"><h1>heading</h1><h2>another heading</h2><p>some text</p></MyComponent> 

なるよう

var newChild = <p>some text</p> 
myComponent.props.children.add(newChild) 

を(明らかに、追加機能は存在しませんが、質問が代わりに何をするかです)

+0

コンポーネントのレンダリングのコンテンツは、コンポーネントの外部から変更しないでください。親コンポーネントのレンダリング機能で子を変更するか、MyComponentに小道具に基づいて子をレンダリングさせるかのいずれかを行う必要があります。

+0

素子? –

答えて

-1

すべての子コンポーネントがある状態を保つ

代わり小道具の状態へとレンダリングに

render() { 
return ({<div>this.state.children.map((child) => {return <child as jsx>;}}</div>); 
1

を書き込むchildrenプロップ(docs参照)JSX要素のタグの間に挿入されたコンテンツを表し、そして直接変更されることになっていません。実際には、this.propsのコンテンツの変更は通常考えられません。あなたの特定の問題に対処するために

、あなたはこのようなもののように、子どもたちがコンポーネントに追加されているかを定義したいように見える:

// parent component's render method 
render() { 
    const elements = ...; //build up an array of elements 
    return (<MyComponent someProp="foo"> 
    <h1>heading</h1> 
    <h2>another heading</h2> 
    {elements} 
    </MyComponent>) 
} 

タイプMyComponentのルート要素は、これらを使用する方法を知られてしまいます子どもたちは適切なレンダリングのためにthis.props.childrenで利用可能になる。このコンポーネントがテキストの挿入を積極的にトリガする必要がある場合は、MyComponentの小文字としてテキスト変更コールバックを含めるか、コンポーネント状態を使用することができます(したがって、その段落の子をまったく使用しないこと)。

+0

あなたのご意見をお寄せいただきありがとうございます。私が提供したさまざまなソリューションを検討する必要があります。私は少し質問を明確にしたいと思います。 http://pastebin.com/31nuQC7w例えば 結果: ' ' –

+0

@ J.Doe私はあなたが何をしようとしているかまだ分かりませんが、あなたの最後のコメントに基づいて質問を更新しました。 –

関連する問題