azcvcza
2021-02-20 12:17:58 +08:00
q:比如组件什么时候会被重新创建,而什么时候只是重新渲染?
一般来说,如果是 for 循环渲染的列表,会要求你绑定一个 key,react 会拿 key 来计算差异来决定是否创建新的,还是在老的上做替换
q:什么时候用 props 什么时候用 state ?
state 专注于组件内部状态,能用 props 计算出来的一般都不用存在 state 里边
q:React 内部是怎样比较前后两次 state 的差异的,会导致哪些组件重新渲染?
一般而言,通过 setState 引发的 state 变化会触发当前组件更新;如果有操作修改到上层容器的状态,那上层容器和他装的东西都会一起更更新,也即组件树中,该节点和他的叶子节点会一路更新下去
q:React 的版本更新还很快,自己对组件的生命周期的理解,到现在还没来得及理清楚。
class 组件比较注重一个组件是该怎么写的,但是该组件的一些共性行为会分散在各个生命周期里,例如 didMount 的时候注册事件监听,网络请求,willUnMount 的时候清除事件监听; function 组件配合 useHook 可以把散落的逻辑抽象出来,实现逻辑复用,缺点就是不能像 class 组件一样方便的拿 ref 来控制具体行为(可以通过 forwardRef 和 useImperativeHandle 替代实现)