javascript - 调用一个变量的 setState 也会更新另一个状态变量
问题描述
这是一个显示此行为的示例组件:
const App = () => {
const [testArray] = useState([{key: "hi", value: "Hello "}, {key: "world", value: "world"}]);
const [otherState, setOtherState] = useState("Change");
function renderTestArray() {
return testArray.map(entry => <span key={entry.key}>{entry.value}</span>);
}
function updateTestArray() {
testArray[0].value = testArray[0].value === "Goodbye " ? "Hello " : "Goodbye ";
setOtherState((prevState) => prevState === "Change" ? "Test" : "Change");
}
return (
<Fragment>
<div>
{renderTestArray()}
</div>
<button onClick={updateTestArray}>{otherState}</button>
</Fragment>
);
};
当我按下更改按钮时,我希望按钮标签会更改,但不会更改“Hello World”消息,因为没有调用该数组的 setState。我不明白的是 React 如何发现 testArray 发生了变化,然后呈现了这种变化。此外,即使未调用其 setState,testArray 更改如何在后续渲染中保持不变。
解决方案
推荐阅读
- minecraft - 是什么导致反编译 Minecraft 时出现此错误?
- php - 如何根据 $SERVER 数组数据找到来自 Google 的用户?
- javascript - Javascript中的递归maxHeap实现
- javascript - JS style.cssText 仅适用于 setTimeout 函数
- php - 如何在 .html() jQuery 中实现 PHP Parser 以实现实时预览输入文本
- docker - docker-compose 无法连接到 Docker 守护程序和 sudo docker-compose up --build 失败并显示 standard_init_linux.go:211
- google-cloud-firestore - 使用来自一个集合的字段的内容作为将在哪个集合中获取数据的决定因素
- android - Kotlin 选择了未在 Dialog Fragment 中显示的图像
- react-native - 如何更改树莓派蓝牙名称
- python - 提取价格 - 美丽的汤