setState如何传值?
- 传入函数时,会把该函数缓存起来,在下次更新状态时调用它, 允许你每次在函数内都拿到前一个值,并基于这个值来计算最新的状态
- 传入其它值时,setState本身是异步的,或者说是批处理的,它总是在函数执行完后再去执行, 当你连续调用setState时,可能拿到的会是旧值,因为状态更新是异步执行,你的代码在状态更新之前已经执行完了
如何理解React中的副作用?
-
纯函数(PureFunction)的概念:传入一个相同的参数,永远返回相同的值, -
副作用是指一个Function做了和本身运算返回值无关的事,比如:修改了全局变量、修改了传入的参数、甚至是 console.log(),所以 ajax 操作,修改 dom 都是算作副作用的
React re-render & render
-
render为一个函数,负责渲染组件的视图/UI, -
re-render是重新渲染的过程,是指从React
Import React from ‘react’ ?
-
在React16及16版本之前,JSX的转换是由babel完成的,babel通过@babel/preset-react 将JSX转换为 React.createElement,因此需要显式的引入React,才能正常调用createElement, 否则就会报错“'React' must be in scope when using JSX” -
在React17之后,直接通过react/jsx-runtime对jsx语法进行新的转换而不依赖React.createElement,结果就是在17之 后,如果只是使用jsx,便不用引入React,程序可以正常运行
React18并发?
-
并发模式实现了基于任务优先级的可打断的渲染流程,并发就是同时交替执行多个任务,当任务被打断后,fiber节点具 有sibling,child,return和parent来记录当前节点位置, -
react在循环处理每个节点时,会用wip(workInProgress)记录当前节点,而并发就是在workLoop中支持打断和恢复 的机制,每处理一次节点,都会判断一下是否打断,会有个shouldYield来判断是否终止本次workLoop循 环, 为true表 示终止本次循环,如何判断是终止循环还是循环结束了?当wip为null时,就代表循环结束了, 2, 当 任务中断就是为了时间分片的实现,当多任务在并发模式下同时交替执行时,
Hook对象?
React重要的几个版本?都有什么新东西?
React15的架构?
-
Reconciler: -
Renderer:
React16的架构?
-
Scheduler -
Reconciler -
Renderer