[toc]
# react元素和react組件關于作為children方面的那些問題
## pre
首先要明確的:
任何字符和react元素(type為string和type為fn)都能作為children
下面這些方式都能為一個組件添加children

## react元素和react組件分別能f以哪些形式作為children
### react元素只能以`{}`的形式而不能用`<>`的形式
另外下面這種等同于type為string類型,即原生html
```
let el = <div>el</div>
```
這個變量名字`el`不用大寫,可以直接用`{}`作為children
```
render(){
return (
<div>
{el}
</div>
)
}
```
這樣寫是不會報錯的,因為`<div>el</div>`就等于`React.createElement('div')`
但如果

是會報錯的,因為此時`El`盡管首字母大寫了,它也不是一個組件,它依然是一個普通的react元素(不是一個函數或則說類),type為string(不為func),是不能使用`<>`的形式的

但依然可以這么使用
```
render(){
return (
<div>
{El}
</div>
)
}
```
### react組件不能用`{}`的形式,必須用`<>`的形式
正如上面標題所言,但有一個前提是react組件的函數名(變量名)必須首字母大寫,不然即使使用`<>`的形式也不會當做一個react組件渲染(而只會被當做一個自定義標簽)
如果使用`{}`(并且`{}`里就是一個組件函數名或類名,未調用React.CreateElement(`<>`)),此時這個react組件還只是一個函數,還沒有調用`React.createElement(組件名)`來創建組件,
會報以下錯誤

但如果`{}`里的已經是一個`<>`(即調用了React.createElement),那么也是可以的。
### react元素里能嵌套react組件(反之,當然亦然)
#### 不是說react元素就不能有孩子

So,不是說react元素就不能有孩子,這個孩子還可以是react組件

- 空白目錄
- 01.JSX,了解一下?
- JSX與虛擬DOM
- React
- 02.React文檔精讀(上)`
- React路由
- 關于BrowserRouter
- 關于Route
- 應用
- 權限認證
- case1
- context
- 新context
- 03.React路由
- 04.Diff
- 05.styled-components
- redux設計思想與API
- redux實現1
- 06.redux2
- 06.redux3
- 關于狀態初始化
- saga
- 新版
- 使用saga進行業務邏輯開發
- react-router-redux
- React性能優化
- immutable使用
- 未整理
- FAQ
- 常用中間件
- pureComponent
- 項目相關總結
- antd分尸
- 按需加載
- ReactWithoutJSX
- 我的組件庫
- C領域
- 用戶接口
- htmlType
- style
- show
- conjure
- grid
- inject
- stop
- 內部接口
- 衍生組件
- Button
- 報錯集錦
- ReactAPI
- 類上的那些屬性
- prop-types
- React.createElement
- React.cloneElement
- React.Children和props.children
- react元素和react組件關于作為children方面的那些問題
- react組件與虛擬dom
- ref