javascript - 为什么传播属性不适用于 React useState 钩子
问题描述
我正在使用 useState 钩子在功能组件中保持状态,并且想要更新单个值而不必显式设置所有其他属性,所以我认为使用扩展运算符会起作用,但它没有!
这是我的状态:
const [state, setState] = useState({
data: [],
currentIndex: 0,
editMode: false
});
有人可以解释为什么这不起作用...
setState({ editMode: value, ...state });
...当这样做时:
setState({ editMode: value, data: [], currentIndex: 0 });
有什么不同?我可以使用扩展运算符还是我误解了什么?
这是一个演示该问题的CodeSandbox 示例。
解决方案
一切都是为了订单。考虑以下几点:
const state = {
data: [],
currentIndex: 0,
editMode: false
};
const value = true;
const result = { editMode: value, ...state };
const result2 = { editMode: value, data: [], currentIndex: 0 };
const result3 = { ...state, editMode: value };
console.log(result);
console.log(result2);
console.log(result3);
我希望这会有所帮助!
推荐阅读
- omnet++ - OMNeT++:如何通过特定的无线接口发送数据包?
- python - Selenium 打开 Web 浏览器但不打开目标 url (InvalidArgumentException: Message: invalid argument)
- r - R; 滚动窗口:计算 3 个 previos 点的方位角,并将其与数据框中以下 3 个值的方位角进行比较
- webforms - 母版页徽标未显示在子文件夹内的新 Web 表单上
- python - 如何在 n 时间后通过阻塞解析解析页面?
- nginx - vlc 中 plablack 的 RTMP 视频点播 (vod) 问题
- spring - 如何使用 Spring 5 Webclient 打印原始 HTTP 请求和 HTTP 响应?
- node.js - 无法从 K8s 集群访问节点应用程序
- docker - Traefik - 当 URL 不是 xxx 时重定向?
- javascript - 无法识别的表达式在控制台中没有痕迹