我這是爲了使不同類型的場爲我的形式組成一個簡單的組件:渲染組件時如何使用點符號?
import React from "react";
export default class Field extends React.Component {
render() {
switch (this.props.type) {
case 'textarea': {
return (
<div className="col-xs-12">
<textarea
placeholder={this.props.placeholder}
name={this.props.name}
>
</textarea>
</div>
)
}
case 'text': {
return (
<div className="col-md-6 col-lg-4">
<input
type="text"
placeholder={this.props.placeholder}
name={this.props.name}
/>
</div>
)
}
}
}
}
而且我使用該組件在我的形式組成是這樣的:
export default class SubmitForm extends React.Component {
render() {
return (
.
.
.
<Field
type="text"
placeholder="something"
name="something"
/>
<Field
type="textarea"
placeholder="another"
name="othername"
/>
.
.
.
)
}
}
什麼我記住的是以某種方式實現我的現場組件,以便能夠使用點符號,如我已經看到許多其他庫中所述的Using Dot Notation for JSX components中所解釋的,並且我希望能夠像這樣使用此組件:
<Field.Text name="sth" placeholder="sth" />
<Field.TextArea name="other" placeholder="other stuff" />
但我不能按照React文檔中提到的方式來做。我怎樣才能做到這一點?
所以實際上是實現這個點表示我猜是沒有意義的。而且我應該創建單獨的組件。並找到一種方法來共享這些組件之間的相互事件處理程序和其他內容。這是唯一的方法嗎?我的意思是我見過其他類似react-redux-form的庫,它提供了類似於或的。他們是否也只是以Control的名義出口? –
Taxellool
@Taxellool嗯,它主要是爲了組織目的。它們只有一個名爲Field的名稱空間,用於將所有字段類型組件組合在一起,並導出名稱空間。 – Li357
謝謝。你答案的最後一部分實際上讓我明白了在文檔中解釋的方式。無論如何,現在我沒有看到有理由繼續這樣做了。 「點符號」的全部目的似乎是用來組織你說的。單獨的組件必須以任何一種方式定義。感謝您的回答。 – Taxellool