首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当RecoilJS中的另一个原子发生变化时,我们能更新原子状态吗?

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

Stack Overflow用户
提问于 2022-03-02 10:10:48
回答 1查看 166关注 0票数 0

我对原子之类的东西很陌生。我有两个原子

确定选择的时间范围的timeRangeAtom

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

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

代码语言:javascript
复制
export const filterAtom = atom<any>({
   key: 'filterAtom',
   default: {time: [] },
});

现在,在我的代码中,每当用户选择日期时,我将更新timeRangeAtom值。我这样做是通过调用setTime of useRecoilState

代码语言:javascript
复制
  const [time, setTime] = useRecoilState(
    timeRangeAtom,
  );

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

一种方法是手动调用setFilterAtom,但这看起来相当繁琐和重复的代码。所以我不确定还有别的办法吗?

EN

回答 1

Stack Overflow用户

发布于 2022-03-02 10:44:52

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

代码语言:javascript
复制
export const filterAtom = selector({
  key: 'filterAtom',
  get: ({get}) => {
    const timeRange = get(timeRangeAtom);
    return {time: [...timeRange]};
  },
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71320881

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档