1

我有一个 React 应用程序,它当前使用存储在 Context API 中的大约 50 个变量。我想尝试使用 Recoil 作为替代方案,但我有一个问题。我是否必须,最好的做法是将每个变量存储在自己的原子中;然后每次我需要使用它时单独导入它?

有了上下文,我可以这样做:

const [appState, setAppState] = useState({
    var1: "string",
    var2: "string2",
    var3: false,
    var4: 23,
    ...
})

然后使用 appState 和 setAppState 作为我的 Context 提供程序中的值。定义和导入 50 个单独的原子有点令人生畏。当然,我不会同时使用所有 50 个,但在使用 Context 之后似乎仍然退了一步。

使用 Recoil,我将不得不:

export const var1 = atom({key: "var1", default: "string",})
export const var2 = atom({key: "var2", default: "string",})
etc...

接着:

import { var1, var2, var3, ... } from './RecoilAtoms'

有一个更好的方法吗?

4

1 回答 1

2

您当然可以将其保存在一个原子中:

const appState = atom({
  key: 'appState',
  default: {
    var1: "string",
    var2: "string2",
    var3: false,
    var4: 23,
    // ...
  }
})

我不确定您所说的“有没有更好的方法”是什么意思。我的猜测是,您指的是整体解决方案,但反冲的全部意义在于拆分您的全局整体状态并以原子方式使用它。否则,使用后坐力并没有真正的好处。

所以是的,我会把它分成几个原子。

于 2021-07-06T07:02:51.157 回答