React.js開發入門教學(9)-分解與組合
其實我們不難發現在寫React很像在寫物件導向語言的感覺。感覺很像在寫物件然後再把物件
放到某個地方執行。那如果是這樣,一個東西本身可以由多個物件組合而成嗎?答案是可以的
一個 Component 可以是由多個 Component 組合而成。我在書上看到一個很好的例子可以
來示範這個。就是用 table !因為HTML5中所規範的 table 有表頭、內容與表尾。那我
們就利用這樣的結構來實做看看。首先先做個完全靜態的表格!
class Table_1 extends React.Component {
constructor(props) {
super(props)
this.state = {}
}
render() {
return (
<table>
<thead>
<tr>
<td>title</td>
<td>title</td>
</tr>
</thead>
<tbody>
<tr>
<td>body</td>
<td>body</td>
</tr>
</tbody>
<tfoot>
<tr>
<td>foot</td>
<td>foot</td>
</tr>
</tfoot>
</table>
)
}
}
ReactDOM.render(
<Table_1 />,
document.getElementById('test')
)
接著我們把它拆成三個部分再組合起來,這樣也許你有兩三個表格用了相同的表頭與表尾時就可以
達到重複利用的效果!程式碼如下
class Table_header extends React.Component {
render() {
return (
<thead>
<tr>
<td>title</td>
<td>title</td>
</tr>
</thead>
)
}
}
//表格1的內容
class Table_body_1 extends React.Component {
render() {
return (
<tbody>
<tr>
<td>body</td>
<td>body</td>
</tr>
</tbody>
)
}
}
//表格2的內容
class Table_body_2 extends React.Component {
render() {
return (
<tbody>
<tr>
<td>body2</td>
<td>body2</td>
</tr>
</tbody>
)
}
}
class Table_footer extends React.Component {
render() {
return (
<tfoot>
<tr>
<td>foot</td>
<td>foot</td>
</tr>
</tfoot>
)
}
}
class Table_1 extends React.Component {
render() {
return (
<table>
<Table_header />
<Table_body_1 />
<Table_footer />
</table>
)
}
}
class Table_2 extends React.Component {
render() {
return (
<table>
<Table_header />
<Table_body_2 />
<Table_footer />
</table>
)
}
}
ReactDOM.render(
<div><Table_1 /><Table_2 /></div>, //這裡要特別注意,記得用DIV標籤包起來喔!
document.getElementById('test')
)