2
我有一個Form
的React組件管理多個Field
的組件,並附加一些道具。 到現在爲止,我只創建簡單的表格,這樣React:將道具只添加到React組件而不是html標籤(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>
}
});
如何修改Form
添加一些道具只有Field
的組件,而不是 html標記?
我知道,實際上我用'child.type'來確定孩子是否是一個函數。我無法弄清楚如何創建一個遞歸方法來添加內部表單html標籤,並添加新的道具只有字段組件(如果字段是在另一個html標籤內) – Webman
如果「你知道」,那麼你需要重新考慮你的問題的措辭 - 最後一行問我怎麼能說出一個組件和一個html元素之間的區別。它沒有提到關於遞歸地走下DOM樹的內容。 – Chris
對不起,但我的英語不好,所以我更難解釋自己。在你的例子中,如果你把'Foo'放在最後一個div中,'Foo'將會是紅色而不是藍色。這是我的問題 – Webman