0

如果作为用户正在执行的某些高级操作的一部分,我必须设置来自多个不同原子的状态,我希望在将整个状态设置为批处理时,任何受影响的原子的所有订阅组件仅重新渲染一次。Recoil可以做到这一点吗?

4

1 回答 1

1

Recoil 默认批量更新状态(React 状态本身也是如此)。如果您不想明智地批量更新代码,可以使用useRecoilCallback钩子,如下所示:

const Component = () => {
  const batchUpdates = useRecoilCallback(({set}) => (valueA, valueB) => {
    set(atomA, valueA);
    set(atomB, valueB);
  }, []);

  return (
    <button onClick={() => batchUpdates(someValueA, someValueB)}>Batch Updates</button>
  );
};
于 2021-04-16T14:16:57.330 回答