5

我确实在我的 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,
};

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

我的组件.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>)

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

4

1 回答 1

6

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

于 2020-12-31T10:31:59.037 回答