#查阅REACT官网时的笔记(入门1)

69 阅读2分钟

渲染

组件显示到屏幕之前,其必须被 React 渲染。理解这些处理步骤将帮助您思考代码的执行过程并能解释其行为。 官网

想象一下,您的组件是厨房里的厨师,把食材烹制成美味的菜肴。在这种场景下,React 就是一名服务员,他会帮客户们下单并为他们送来所点的菜品。这种请求和提供 UI 的过程总共包括三个步骤:

  1. 触发 一次渲染(把客人的点单分发到厨房)
  2. 渲染 组件(在厨房准备订单)
  3. 提交 到 DOM(将菜品放在桌子上)

简要

  • 您可以使用严格模式去找到组件中的错误

  • 如果渲染结果与上次一样,那么 React 将不会修改 DOM

关于性能优化

但是!当你调用setState时,即使更改的数据与原来的数据是一样的,它仍然会去调用render函数!

所以有个shouldComponentUpdate()函数给我们做优化,若数据相同,return false,即可不触发render()生命周期

State

state如同一张快照,设置 state 只会为下一次渲染变更 state 的值官网

我理解为:setState是异步的!

在当次渲染中,不管你setData(直接替换值)多少次,在这一次的函数运行中,data的值是不变的,data仍然是该次渲染时的值。

但是我们能通过给setData(传入函数,需要有返回),React就会将函数加入队列,在下一次渲染期间,React 会遍历队列并给你更新之后的最终 state

例子:setData(n => n + 1);
setData(n => n + 1);
setData(n => n + 1);

setNumber(number + 5);
setNumber(n => n + 1);
该例子当number为0,会返回6

setState(x) 实际上会像 setState(n => x) 一样运行,只是没有使用 n

在React中,想要更改页面数据,要保持immutable的思想, ==> 我们是要替代(replace),而非修改(modify).