首页 > 解决方案 > 为什么传播属性不适用于 React useState 钩子

问题描述

我正在使用 useState 钩子在功能组件中保持状态,并且想要更新单个值而不必显式设置所有其他属性,所以我认为使用扩展运算符会起作用,但它没有!

这是我的状态:

const [state, setState] = useState({
  data: [],
  currentIndex: 0,
  editMode: false
});

有人可以解释为什么这不起作用...

setState({ editMode: value, ...state });

...当这样做时:

setState({ editMode: value, data: [], currentIndex: 0 });

有什么不同?我可以使用扩展运算符还是我误解了什么?

这是一个演示该问题的CodeSandbox 示例。

标签: javascriptreactjsreact-hooks

解决方案


一切都是为了订单。考虑以下几点:

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);

我希望这会有所帮助!


推荐阅读