【问题标题】:Batch set state for RecoilRecoil 的批量设置状态
【发布时间】:2021-04-15 22:32:21
【问题描述】:

如果作为用户正在执行的某些高级操作的一部分,我必须设置来自多个不同原子的状态,我希望在将整个状态设置为批。 Recoil 可以做到这一点吗?

【问题讨论】:

    标签: recoiljs


    【解决方案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>
      );
    };
    

    【讨论】:

    • 值得注意的是,更新是批处理的,只要它们是同步执行的。如果您执行set(a, await reqA()); set(b, await reqB()) 之类的操作,则不会批量更新。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-17
    • 1970-01-01
    相关资源
    最近更新 更多