我刚刚开始在一个新项目中使用 Recoil,我不确定是否有更好的方法来实现这一点。
我的应用程序是一个基本上编辑包含对象数组的 JSON 文件的界面。它读入文件,根据特定属性将对象分组到选项卡中,然后用户可以导航选项卡,查看每个选项卡的几百个值,进行更改,然后保存更改。
我正在使用反冲,因为它允许我从应用程序中的任何位置访问每个输入的状态,这使得保存更容易 - 理论上......
为了为 JSON 文件中的每个对象生成状态,我创建了一个返回的组件,null
我映射到初始数组,创建组件,该组件使用 AtomFamily 创建 Recoil 状态,然后还将 ID 保存到另一个部分Recoil 状态,所以我可以保留所有内容的列表。
问题 1这些是更好的方法吗?该null
组件感觉不对,但是将整个数组存储在单个状态中会导致每次按键时重新渲染所有内容。
为了保存数据,我有一个调用函数的按钮。该函数只需要获取 ID,遍历它们,获取每个 ID 的状态,然后将它们推送到一个数组中。我也使用 Selector 完成了此操作,但问题是由于 Hooks 规则,我无法从函数调用 getRecoilValue - 但是如果我将值提供给父组件,它会再次减慢一切。
问题 2我很确定我错过了考虑存储状态和使用钩子的正确方法,但是我还没有找到这个特定用例的任何示例 - 需要预先生成状态,然后访问它再次保存。有什么指导吗?