我有一个订阅 Recoil atomFamily 的 React 功能组件。目的是 atomFamily 将更新父状态中的一个项目,然后依赖于父状态的另一个组件将通过useEffect
. 然而,这似乎并没有发生。为什么会这样?从它的样子(和我自己的实验)来看,使用 Recoil 选择器更改父状态的一部分应该会自动传播回父状态。
选择器状态项如下所示:
import { atomFamily, selectorFamily } from "recoil";
import { GroupInterface } from './../interfaces/GroupInterface';
import { GroupList } from './GroupList';
export const GroupSelector = atomFamily({
key: "GroupSelector",
default: selectorFamily({
key: "GroupSelector/default",
get: id => ({get}): GroupInterface => {
const groupList = get(GroupList);
return groupList.find((group) => group.id === id) as GroupInterface
}
})
})
父状态项如下所示:
import { atom } from 'recoil';
import { GroupInterface } from '../interfaces/GroupInterface';
export const GroupList = atom({
key: "GroupList",
default: [] as GroupInterface[]
})
设置atomFamily后需要更新的组件如下:
useEffect(() => {
setCurrentActiveSwaps(getCurrentActiveSwaps(groupList));
// eslint-disable-next-line
}, [groupList])