当RecoilJS中的另一个原子发生变化时,我们可以更新一个原子状态吗



我对回收原子和其他东西很陌生。假设我有2个原子

确定选择的时间范围的timeRangeAtom

export const timeRangeAtom = atom<Array<string>>({
key: 'timeRangeAtom',
default: [
dayjs().subtract(7, 'day').format(DateFormat),
dayjs().subtract(1, 'day').format(DateFormat),
],
});

filterAtoms,用于确定所有过滤器的当前用户选择(其中一个是timeRange(

export const filterAtom = atom<any>({
key: 'filterAtom',
default: {time: [] },
});

现在,在我的代码中,每当用户选择日期时,我都会更新timeRangeAtom值。我打电话给useRecoilStatesetTime

const [time, setTime] = useRecoilState(
timeRangeAtom,
);

现在我的问题是,每当timeRangeAtom发生更改时,我如何将此更改同步到我的filterAtom.time

一种方法是通过调用useRecoilState手动设置FilterAtom,但这似乎相当乏味和重复的代码。所以我不确定还有其他办法吗?

您可以使用选择器API:从其他原子创建派生状态

export const filterAtom = selector({
key: 'filterAtom',
get: ({get}) => {
const timeRange = get(timeRangeAtom);
return {time: [...timeRange]};
},
});

相关内容

  • 没有找到相关文章

最新更新