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