1.为什么react是声明式的
- 说到声明式编程,就要说到命令式编程。命令式编程注重过程,开发者需要告诉程序每步要怎么做,声明式编程注重结果,直接告诉程序要什么
- 声明式编程更加简洁便利,好维护
2.react强调的数据不可变是指什么
- 简化复杂的功能
不可变性使得复杂的特性更容易实现。
- 跟踪数据的改变
如果直接修改数据,那么就很难跟踪到数据的改变。跟踪数据的改变需要可变对象可以与改变之前的版本进行对比,这样整个对象树都需要被遍历一次。
跟踪不可变数据的变化相对来说就容易多了。如果发现对象变成了一个新对象,那么我们就可以说对象发生改变了。
- 确定在 React 中何时重新渲染
不可变性最主要的优势在于它可以帮助我们在 React 中创建 pure components。我们可以很轻松的确定不可变数据是否发生了改变,从而确定何时对组件进行重新渲染 www.jb51.net/article/209…
3.class和hook的区别,以及为什么要用hook
- 首先hook的写法比class更加简练,其次也不需要去维护this
- hook的代码更加紧凑,例如在类组件里挂载声明一个timer,卸载时清除它就需要用到两个生命周期函数。但是在函数式组件里只需要useEffect就可以了
- hook可以更加方便的复用组件 juejin.cn/post/684490…
4.口述new是怎么实现的
- 创建一个新的obj
- 将obj的__proto__指向接受的变量的prototype
- 将构造函数(接受的变量)的this指向obj
- 返回obj