Recoil 的批处理设置状态

问题描述

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

解决方法

默认情况下,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>
  );
};

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...