反冲:重复的原子键 - 在 nextjs 中

sut*_*her 14 reactjs next.js recoiljs

我确实在我的 nextjs 应用程序中使用了反冲力。但是,如果我接下来运行(在开发或生产中没有区别),我会收到以下错误消息:

重复的原子键“companyData”。这是生产中的致命错误。但如果由于热模块更换而发生此警告,则可以安全地忽略此警告。

这是我实现它的方式:

/src/stores/CompanyStore.js

import { useSetRecoilState, useRecoilValue , atom } from 'recoil';
import config from '../../content/config.yml';

const companyData = atom({
  key: 'companyData',
  default: {...config.company},
});

export const useSetCompanyData = () => useSetRecoilState(companyData);
export const useCompanyData = () => useRecoilValue(companyData);


export default {
  useSetCompanyData,
  useCompanyData,
};
Run Code Online (Sandbox Code Playgroud)

我在某些组件中这样使用它:

我的组件.js

import React from 'react';
...
...

import {useCompanyData} from '../stores/CompanyStore';

const MyComponent = () => {
  const classes = useStyles();
  const companyData = useCompanyData();
  const { summary: headline, description } = companyData;

return (<div><h2>{headline}</h2><p>{description}</p>)
Run Code Online (Sandbox Code Playgroud)

我不明白为什么会出现此错误消息。这可能是由 nextjs 中的错误引起的,还是我以错误的方式实现了反冲力?

a p*_*erd 17

从 Recoil 0.7.6 开始,添加RECOIL_DUPLICATE_ATOM_KEY_CHECKING_ENABLED=false到您的环境中以隐藏这些警告。

(roeland 有正确的GitHub 问题,现已关闭)

  • 对我有用。将其添加到开发模式:`RECOIL_DUPLICATE_ATOM_KEY_CHECKING_ENABLED=false next dev` (2认同)

r03*_*r03 14

当您在单独的文件中拥有状态时,nextjs 中的反冲似乎存在问题: https://github.com/facebookexperimental/Recoil/issues/733