首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将API调用的结果设置为反冲原子的默认值?

如何将API调用的结果设置为反冲原子的默认值?
EN

Stack Overflow用户
提问于 2020-08-05 06:07:58
回答 2查看 2K关注 0票数 3

我正在尝试将RecoilJS中的原子的默认值设置为异步API调用的值。我这样做的目的是,当某个React组件呈现时,它将拥有数据库中的所有当前集合,而不必调用useEffect()。这是我的代码。

代码语言:javascript
复制
const sets = (async () => await setService.getAll())()

export const setsState = atom({
  key: 'sets',
  default: sets
})

这是我得到的错误...

代码语言:javascript
复制
index.js:1 Warning: Cannot update a component (`Batcher`) while rendering a different component (`App`). To locate the bad setState() call inside `App`, follow the stack trace as described in https://facebook.com/setstate-in-render
    in App (at src/index.js:10)
    in Router (created by BrowserRouter)
    in BrowserRouter (at src/index.js:9)
    in RecoilRoot (at src/index.js:8)

我所采取的方法有没有根本上的错误?我应该用另一种方式来完成这件事吗?我是不是做错了什么,或者这只是反冲的一个损坏的特性?

EN

回答 2

Stack Overflow用户

发布于 2020-09-15 22:56:46

您可以尝试创建一个异步选择器,并将其放入atom的默认值中,如下所示:

代码语言:javascript
复制
const mySelector = selector({
  key: 'mySelector',
  get: async ({get}) => {
    return await setService.getAll()
  }
})

const myAtom = atom({
  key:'myAtom',
  default: mySelector
})
票数 8
EN

Stack Overflow用户

发布于 2020-08-09 22:15:49

您报告的警告是known by the Recoil maintainers,它将在下一个版本中修复。

不建议:如果你想暂时隐藏它,你可以将React降级到v16.12.0,这取决于你是否可以忍受这个警告,直到下一个反冲版本?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63255744

复制
相关文章

相似问题

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