組件如果作為一個表達式,就會調用,就會被渲染成虛擬dom
比如作為一個return的返回值,比如作為一個參數傳入
解決辦法是給這些個組件包一層`()=>`
```
import React from 'react';
import {Route} from '../react-router-dom';
//注意要用()=> 包一層,不然得到的是虛擬DOM(因為<Route></Route>放這里就相當于函數調用),而不是組件
//let el = <Xxx></Xxx> 這樣得到的就是虛擬dom
export default (Component) => (
()=><Route component={Component}></Route>
)
```
其實組件就是一個函數,`<>`就相當于`fn()`
```
import React from 'react';
class Panel extends React.Component{
render(){
return (
<div className="panel panel-default">
<div className="panel-heading">頭部</div>
<div className="panel-body">
{
// this.props.children
this.props.children('面板')
}
</div>
</div>
);
}
}
export default (<Panel>
{/*{<div>我是內容</div>}*/}
{(text)=><div>{`我是${text}`}</div>}
</Panel>, document.querySelector('#root'));
```
- 空白目錄
- 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