我对回收原子和其他东西很陌生。假设我有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
值。我打电话给useRecoilState
的setTime
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]};
},
});