问题描述
我确实在我的 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,};
我在某些组件中是这样使用它的:
MyComponent.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 中的错误导致的,还是我以错误的方式实现了反冲?
解决方法
当您在单独的文件中有状态时,nextjs 中的后坐力看起来有问题: https://github.com/facebookexperimental/Recoil/issues/733