我对原子之类的东西很陌生。我有两个原子
确定选择的时间范围的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值。我这样做是通过调用setTime of useRecoilState
const [time, setTime] = useRecoilState(
timeRangeAtom,
);现在,我的问题是,每当filterAtom.time更改时,如何将此更改同步到timeRangeAtom?
一种方法是手动调用setFilterAtom,但这看起来相当繁琐和重复的代码。所以我不确定还有别的办法吗?
发布于 2022-03-02 10:44:52
您可以使用选择器 API从其他原子创建派生状态:
export const filterAtom = selector({
key: 'filterAtom',
get: ({get}) => {
const timeRange = get(timeRangeAtom);
return {time: [...timeRange]};
},
});https://stackoverflow.com/questions/71320881
复制相似问题