【发布时间】:2020-01-15 01:20:37
【问题描述】:
在我的状态下,我使用集合来跟踪选择。该集合可以增长到相当大的大小,因此我希望防止不断复制该集合。
我正在使用如下状态的钩子,代码正在运行。然而,与其返回一个新集合,我更喜欢返回“旧集合”,更新集合。
但是,当我这样做时,react 不会注意到更改和重绘事件以及其他效果不会发生。
const [selected, setSelected] = React.useState<Set<number>>(new Set());
function onSelect(ev: SyntheticEvent<>, checked: boolean, event_id: number) {
setSelected((selected) => {
if (checked) {
if (!selected.has(event_id)) {
selected.add(event_id);
}
} else {
if (selected.has(event_id)) {
selected.delete(event_id);
}
}
return new Set(selected);
})
}
如何告诉反应“嘿,我更新了 xyz 状态变量”?
【问题讨论】:
-
使用
setSelected是更新状态的唯一正确方法,AFAIK。此外,我认为用户不会看到性能差异
标签: reactjs state react-hooks