问题描述
我无法弄清楚如何使多个 Recoil 原子状态相互依赖。
例如,(这不是我的用例,但它是我遇到问题的概念的简单演示),想象一个单选按钮组,其中每个单选按钮的状态由原子保持
当一个原子的状态变为真时,所有其他原子的状态都需要将自己设置为假。当所有原子都分布时,如何实现这样的事情?
(对于我的实际情况,我的原子包含对象而不是布尔值,其他原子需要以特定方式更改,具体取决于该对象中的字段以及哪个原子发生了更改。 )
解决方法
我最终通过在我的 atomFamily 周围创建一个 selectorFamily 来解决这个问题,然后只与 selectorFamily 而不是直接与 atomFamily 交互。
selectorFamily 的 set() 属性具有 ({get,set}) 参数,可用于与我的 atomFamily 生成的多个原子进行交互。在我的 set() 中,我使用族参数、传入状态和现有状态(通过提供的 get() 获取),以便有条件地执行我需要的状态转换。