进阶React

2020-03-17  本文已影响0人  lmmy123

hoc, render porps, hooks 的对比和用处

  1. 都是react解决状态共享和逻辑复用的方法
  2. hooks 是16.8后推出的,不用嵌套,不用修改组件层级,简单易用

虚拟dom是什么

diff算法?

新旧vdom tree对比
遵循三个原则

jsx原理

实际调用了react.createElement(type, props, ...children)
用来生成vnode
createElement根据type,如果是class,则createComponent, 继承copponent,合并配置,生成vnode

自定义的react组件为何必须大写

用来区别原生标签,便于浏览器识别解析
babel在编译过程中判读组件的首字母,如果小写则为原生dom标签,编译为字符串,如果大写则判读为自定义组件,编译为组件

setState是同步还是异步?

这里的异步不是指异步代码实现,指的是先收集变更,放入队列中,然后统一进行批量更新

react 如何实现自己的事件机制?

聊聊fiber架构

为什么引入?
渲染线程和js引擎线程互斥
15及以前版本渲染采用同步,碰到嵌套过深或渲染耗时的组件,页面会卡顿阻塞,用户体验差
fiber架构,让渲染有优先级,可中断,
利用时间片的概念,每个任务上携带expirestime(过期时间),通过expirestime 对比判断任务的优先级,如何碰到优先级高的任务,组件暂停渲染,将执行栈交给优先级高的任务先执行,执行完后,在暂停渲染的组件处重新开始渲染,利用来浏览器api requesIdleCallback(利用浏览器空闲时间来处理任务)来实现

react事件中为什么要绑定this或者要用箭头函数

this指向的问题
this指向不是定义时的环境,而是执行时绑定环境,指向underfind(严格模式下)
绑定this指向组件实列
constructor中 bind this, 只操作一次
箭头函数,每次都会重新生成

上一篇下一篇

猜你喜欢

热点阅读