React VS Vue
react 遵循immutable 思想,不会再原属性上修改对象,react只能把所有对象render一遍,在render的水源
在 React 工作流中,如果只有父组件发生状态更新,即使父组件传给子组件的所有 Props 都没有修改,也会引起子组件的 Render 过程。
PureComponent 和 React.memo 就是应对这种场景的,PureComponent 是对类组件的 Props 和 State 进行浅比较,React.memo 是对函数组件的 Props 进行浅比较。
why hooks
所以 Hooks 出现本质上原因是:
- 1 让函数组件也能做类组件的事,有自己的状态,可以处理一些副作用,能获取 ref ,也能做数据缓存。
- 2 解决逻辑复用难的问题。
- 3 放弃面向对象编程,拥抱函数式编程。
State
**对于类组件如何限制 state 带来的更新作用的呢?
- ① pureComponent 可以对 state 和 props 进行浅比较,如果没有发生变化,那么组件不更新。
- ② shouldComponentUpdate 生命周期可以通过判断前后 state 变化来决定组件需不需要更新,需要更新返回true,否则返回false。**