1.hook出现的本质原因是为了让函数组件也能做一些类组件的事情,解决逻辑复用难的问题
2.最简单易懂的理解是hook就是一些use的API
3.useState为什么不能是对象,从易用性上来说,解构赋值排序的问题,只要顺序对了,名字可以随便取,对象不行
4.useEffect和useLayoutEffect的区别就是 layout是用来修改DOM,属于同步绘制会阻塞页面,比effect更早触发
5.useEffect主要是根据依赖更新所触发的副作用.不会阻塞浏览器绘制,是异步执行的
6.useInsertionEffect会在dom更新前执行,也属于同步,可以避免多次更新渲染的问题
7.redux 三大原则 单项数据流, state 只读, 纯函数执行.唯一修改state的方法只有 dispatch
8.redux 实际上也是单例模式的一种,核心是订阅模式的方式来实现,以store为数据中心,使用dispatch修改数据,使用subscribe 订阅数据. 修改数据的时候就会通知对应的订阅
9.compose 就是类似于函数柯里化的一种递归处理.把所有函数层层计算
10.批量更新API unstable_batchedUpdates(fn),可以把多个setState在同一个片段更新
11.如果你想要让某个setState更新优先级更高 ReactDOM.flushSync(fn) 就用这个方法
12.React.creatClass和 extend Component的区别是,首先语法上面会有区别,然后是creatClass会自动绑定this.component需要用Bind进行处理,目前官方主要还是推荐es6的写法,creatClass已经在15以上被废弃了
13.受控组件主要的意义是 react到底能不能知道当前的组件的状态被修改
14.Fragment是用来解决当前组件想用多个根节点的问题的.类似于template.是一种兜底的操作
15.高阶组件HOC的含义是.入参是组件,出参也是组件.可以用来实现例如 公共模块抽象,提升复用性,权限控制,捕获异常等.
16.属性代理和反向继承的区别是 属性代理是通过props去影响组件的,而反向代理是直接把继承的组件copy了一份来进行直接修改
17.useMemo和useCallback的区别是一个是直接返回的运行结果,一个是返回的函数.useMEmo是只有当依赖发生变化的时候才会执行.是用函数闭包来做缓存
18.如果不用useState去赋值的话.也可以用useRef
19.react.lazy的方式去引入组件会进行一个懒加载.配套引入Suspense组件