1、class组件和类组件区别?
2、useMemo和usecallback如何提升性能
3、React-router-dom V5和V6有什么区别?
4、React中Hooks及含义
5、React的生命周期有哪些?
6、什么是高阶组件?如何使用?用过哪些高阶组件
7、React中受控组件和非受控组件
8、什么是promise?
Promise 是一种用于异步编程的 JavaScript 对象。它表示一个尚未完成的操作,但在未来的某个时间点会完成,可能会成功返回结果,也可能返回失败的原因。 Promise 将异步操作的结果与成功和失败处理程序分离开来,可以有效解决 JavaScript 中异步编程带来的回调地狱问题。
Promise 对象有三种状态:
- 等待(pending):初始状态,即操作尚未完成。
- 已完成(fulfilled):操作成功完成,返回了结果。
- 已拒绝(rejected):操作失败,返回失败的原因。
Promise 对象有两个核心方法:
- then() 方法:当 Promise 对象进入已完成状态时调用,成功时返回结果,失败时返回一个错误对象。
- catch() 方法:当 Promise 对象进入已拒绝状态时调用,可以捕获错误并进行处理。
Promise 对象的优点有:
- 可以解决回调地狱问题,使异步代码更易于理解和维护。
- 可以有效地处理并行操作,避免了层层嵌套的回调函数。
- 可以使用链式调用来组合多个异步操作,代码更加简洁。
Promise 对象的缺点有:
- 无法取消 Promise,一旦创建就会执行,无法中途取消。
- 如果不正确处理 Promise 中的错误,会导致程序崩溃或无法调试。
- 对于某些复杂的异步场景,Promise 也无法完全满足需求。
简单封装一个promise:
function getJson(url) {
return new Promise((resolve, reject) => {
const xhr = new XMLHttpRequest()
xhr.open('GET', url)
xhr.onreadystatechange = function() {
if (this.readyState === 4) {
if (this.status === 200) {
resolve(JSON.parse(this.responseText))
} else {
reject(new Error(this.statusText))
}
}
}
xhr.onerror = function() {
reject(new Error('Network Error'))
}
xhr.send()
})
}
9、Promise和async/await有什么区别?
10、虚拟DOM和真实DOM的区别
11、React生命周期的过程
12、state和props有什么区别?
13、React组件通信的流程
14、React中Hooks的理解及使用
15、React中setState的运行机制的理解?
16、说说你对React中事件机制的理解
17、Js的数据类型和内存存储区别
18、Js中数据类型判断的方法有哪些?
19、说说你对Vue中生命周期的理解?
生命周期就是:从vue实例产生开始到vue实例销毁这个时间所经历的过程。
生命周期函数都有:
beforeCreate():创建实例前执行
created():创建实例完成后执行
beforeMount():组件挂载前
mounted():组件挂载到实例上后
beforeUpdate():数据发生改变,更新之前
updated():数据发生更新之后
beforeDestroy():组件实例销毁前
destroyed():组件实例销毁后
新增:
activated():keep-alive缓存组件激活时
deactivated():keep-alive缓存组件停用时
errorCaptrued():捕获一个来自子孙组件的错误时调用
20、Vue2的响应式原理是什么?
vue中响应式原理:核心是通过es5的object.defindeProperty进行数据劫持,然后使用get和set进行数据的获取和设置,这时data中生命的属性会被添加到get和set中,当读取data中的数据时,会自动调用get方法,当数据进行修改时,会自动调用set方法,去监听检测数据的变化,同时通知观察者wacher,观察者会自动重新触发render组件(注:子组件不会重新渲染),