Pure 组件

什么是纯函数

  • 不改变函数作用域以外的内容

  • 同样的输入永远返回同样的结果

Pure Components

对于 Pure Components 来说,相同的输入(props, state, context)永远得到相同的 JSX 内容,同时也不要在操作组件外部的”全局变量“。

为什么要保持 Purity ?

  • 纯组件可以让 React 优化渲染,如果输入不变时即可跳过

  • 在渲染途中数据发生了变化可以重启渲染

  • 可以在服务端完成渲染

  • 更多新的 React 特性都会利用到 Purity

Side Effects

Pure 意味着相同的输入应该得到相同的结果。

但是一些额外的”副作用“也是必要的,一般分为以下两种 Side Effects:

  • 事件回调

  • useEffect

这些副作用不会在 render 阶段发生。而是发生在 render 之后。因此,这些副作用可以不需要保证 Purity。

在处理 Side Effect 时,优先使用回调的方式,继而再考虑使用 useEffect()。

StrictMode 下的 Purity 检查

在开发环境下,默认会启动 StrictMode。

在 StrictMode 下,React 都会默认调用两次渲染函数。通过两次调用,来找出哪些组件违反了 Purity。

Last updated