实习笔记:react篇

这是笔者在实习中所学习到的和了解的。

Posted by 南三号 on August 11, 2019

实习笔记——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:为函数组件提供生命周期函数,但是有所不同。他将componentDidMountcomponentDidUpdate融合在一起,使得可以将相同的事务放到了同一个函数中进行处理。每次渲染都会执行,当组件卸载的时候会执行函数的返回值(也是一个函数)。当几个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