基本
1 | # 创建基于ts的react项目 |
详情见https://juejin.cn/post/7081281152069140494
必须依赖三个库
react 核心代码
react-dom 使react渲染在不同平台
babel 转换jsx
react-dom
默认导出ReactDom
对象
方法:
render(content, target)
content
渲染的内容(jsx)target
挂载的对象(dom对象)
组件
1 | // 创建组件 |
- 当数据更新后,不推荐直接修改state数据源,必须手动调用
this.setState({...})
修改,react才会重新render渲染到界面 - jsx中事件绑定组件方法执行时,受到react调用了
call
处理,this
指向为空。解决方法:- 绑定时用
bind
指定this
-bind
的优先级要高于call
- 构造器中用
bind
重新赋值方法 - 采用箭头函数定义方法
- 绑定时用箭头函数包裹调用(推荐)
- 绑定时用
- 函数式组件没有状态和生命周期,但是可以用hooks解决
- 组件父类
React.Component
已经实现将props
自动赋给this
,只需要在构造器中调用super(props)
这个操作react内部已经帮我们做了可不写 - 设置静态属性
displayName
可定义组件在开发工具的名称,否则会默认用类名 - 官方强烈建议不要创建自己的组件基类,因此高阶组件都是通过函数,而不是创建class继承 - 组合非继承
- 懒加载组件:
React.lazy(()=>import(path))