组件如果作为一个表达式,就会调用,就会被渲染成虚拟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