3.28
- 1.super和super(props)
在React类组件里,可以省略super,但如果用了super(),在super()和构造函数结束之前this.props()依然是undefined,因为在React会在类组件构造函数生成实例后再给this.props赋值,用super(props)就不会有这个问题
- 2.setstate?
– 在setTimeout,原生事件里是同步更新(React 18前),生命周期或者React合成事件里是异步
– 批量更新,有覆盖的机制
– 如果想立刻获取更新后的值,在setstate的第二个回调里面更新后会执行
- 3.React事件机制
React事件处理函数书写方式/事件绑定方式 和原生事件有差异
React的事件其实就是挂载在document上的,不直接绑在DOM上,减少内存开销
真实dom原生事件冒泡到document => React冒泡 => 真正挂载到document上的原生事件
阻止合成事件间的冒泡,用e.stoppropagation()
阻止合成事件与最外层 document 上的事件间的冒泡,用e.nativeEvent.stopImmediatePropagation()
- 4.React事件绑定?
bind或者箭头函数(类组件)
- 5.React组件间通信?
父子=>props 子父=>父给子传一个函数/ref
兄弟=>可以用共同的父组件实现共通
全局状态管理=>Redux
还有一种类似Redux的模式=>Context(Provider/Consumer)
- 6.Redux中间件?
Redux-thunk/Redux-logger
都需要用applyMiddleWares注册
- 7.Render?
render函数里面可以编写JSX,转化成createElement这种形式,用于生成虚拟DOM,最终转化成真实DOM
在React 中,类组件只要执行了 setState 方法,就一定会触发 render 函数执行,函数组件使用useState更改状态不一定导致重新render