2
のReactコンポーネントがあり、いくつかのコンポーネントを管理し、いくつかの小道具を付けています。 は今まで、私はこのReact:Reactコンポーネントのみに小道具を追加する(React.Children.map再帰的に)
<Form>
<FieldText/>
<FieldDropdown />
</Form>
のように、単純なフォームを作成しましたが、今、私は、より複雑な構造を持つフォームを必要とする、シンプルなフォームでこの
<Form>
<div>
<a data-tab="first">First Tab</a>
<a data-tab="second">Second Tab</a>
</div>
<div data-tab="first">
<FieldText />
</div>
<div data-tab="second">
<FieldText />
</div>
</Form>
ように私はこれでField
に小道具を追加しました道
var Form = React.createClass({
render: function(){
<form onSubmit={this.submit} acceptCharset="UTF-8" ref={cForm.id}>
{
React.Children.map(this.props.children, child => {
// if type is funtion the is a react component
if(typeof child.type === "function"){
return React.cloneElement(child, {
attachToForm: this.attachToForm,
disabled: this.props.disabled
});
} else {
return child;
}
})
}
</form>
}
});
私だけ
Field
のコンポーネントにいくつかの小道具を追加する
Form
を変更するにはどうすればよい
なく htmlタグ?など「スパン」、「DIV」、
として文字列を
私が知っているのは、実際にはchild.typeを使って子が関数かどうかを判断することです。私はフィールド内にhtmlタグを追加する再帰的メソッドを作成する方法を理解することはできません。フィールドが別のhtmlタグの内側にある場合は、新しい小道具を追加するだけです。 – Webman
"知っていれば"あなたの質問の文言 - 最後の行は、コンポーネントとhtml要素の違いをどうやって分かりますか? DOMツリーを再帰的に歩くことについては何も言いません。 – Chris
申し訳ありませんが、私の英語は悪いので、自分自身を説明するのは難しいです。あなたの例では、最後のdivの中に 'Foo'を入れた場合、 'Foo'は赤で青ではありません。これは私の問題 – Webman