我最近试图深入了解 ReactJS 和 Redux 在钩子何时更新方面是如何工作的。
考虑一下我所做的游戏:
let state = { a: 1 };
//action happens, but no change
//comparison
const prevState = state;
state = state;
const nextState = state;
const equal = prevState === nextState ? "Yes" : "No";
console.log("Action - no change. Are they equal?", equal);
上面的例子很简单,都指向同一个对象。
看下一个例子:
let state = { a: 1 };
//action happens, change in state
//comparison
const prevState = state;
state = { ...state, b: 2 };
const nextState = state;
const equal = prevState === nextState ? "Yes" : "No";
console.log("Action - no change. Are they equal?", equal);
虽然现在比较如何对钩子起作用是有道理的,但不完全是为什么。
我们正在改变状态,对象本身,但无论它得到什么值,它都会是相同的引用?那么我理解错了什么?是值的对象引用,还是声明,或两者兼而有之?
慕盖茨4494581
相关分类