useEffect 数组中的值更新后先执行哪个函数
这个我也不知道当时为什么脑抽答了先执行第一个函数…然后再执行返回后的那个函数。
这个肯定就是先执行返回后的函数,再执行第一个函数的。
用脑子想想,比如有个定时器…你更新了之后不得先清除吗…
// xxx 更新了之后会先执行 funcB
useEffect(() => { // 此处意为第一个函数 - funcA
return () => {
// 此处为第二个函数 - funcB
}
}, [xxx])
当数组中参数是对象的时候,属性值变了函数会执行吗
当时是答对了,但是追问的时候脑子糊了…没答好。
前面我说对象是引用类型,然后面试官问那为什么对象属性值变了,会触发执行第一个函数,他们不应该指向同一地址吗?
以如下代码进行讲解:
const [o, setO] = useState({a: 1})
useEffect(() => {
console.log('o changed');
}, [o])
其实当你 setO
的时候它内部是直接将 o 的值给替换掉,所以是个新的对象,而非指向同一地址。
我也不知道当时为什么我没答上来,大概是被面试官气场压制了,前面没答好,后面就容易崩。。。