实习笔记——react篇
-
react的fiber机制:
原来的更新机制:计算出全部的差异并放入差异队列后,再一次性的去执行 patch 方法完成真实的DOM更新。如果执行时间过长,就会造成页面的卡顿。
react fiber:将整个过程分成一个一个的fiber,并且按照优先级执行,
优先级顺序为:文本框输入 > 本次调度结束需完成的任务 > 动画过渡 > 交互反馈 > 数据更新 > 不会显示但以防将来会显示的任务
-
React.lazy和Suspense配合使用实现懒加载。不支持服务端渲染,想在服务端渲染中使用,需要Loadable Components
-
高阶组件:可以提取一些公用能力,可以做到逻辑复用。
-
Portal 提供了一种将子节点渲染到存在于父组件以外的 DOM 节点的优秀的方案。比如弹窗,模态框。
-
react hook(react的新特性)
原先的组件分为函数组件和class组件,函数组件没有生命周期函数,也没有state。react hook的作用就是让你不编写class组件也可以使用相关的特性。
state hook:为函数组件提供state的特性。可以提供一个state变量和该变量的set方法。
effect hook:为函数组件提供生命周期函数,但是有所不同。他将
componentDidMount
和componentDidUpdate
融合在一起,使得可以将相同的事务放到了同一个函数中进行处理。每次渲染都会执行,当组件卸载的时候会执行函数的返回值(也是一个函数)。当几个effect hook具有相同的逻辑时,可以将公共部分提出来,定义”自定义hook“(命名使用use开头)。然后再其他函数中调用该hook。hook规则:只在最顶层使用 Hook,只在 React 函数中调用 Hook。
-
react源码学习:组件和setState,setState并不是都是同步执行的,所以在setState之后立即获取state中的数据是有可能会出错的,原因是setState会判断当前的状态,假如正处在创建/更新组件的过程中,那么将不会立即更新state,而是会将操作先放在一个待更新队列中。
-
react源码学习:组件,组件的ref属性是存的真实dom的引用。props里嵌套子节点,组件创建时会在外边装一层ToplevelWrapper,这层的作用是假如不是自定义组件也可以当作自定义组件处理。之后创建用来管理组件的实例。之后进行初始渲染,分为两个过程,一个是创建真实dom节点(这个过程称为挂载,会递归挂载),第二步插入到dom树中。
-
createReactClass()和ES6 classes()的区别
主要在函数的绑定上,对一些常用的操作,比如state初始化,props默认值会提供一个函数来操作。
自动绑定:createReactClass中定义的方法会自动绑定。而ES6 classes则需要bind来进行绑定。
-
Css中使得
/n
可以换行white-space:pre-wrap