如何使用来自不同包的相同 React 上下文?

nkt*_*ssh 5 javascript reactjs

如何使用来自不同包的相同 React 上下文?

\n\n

例如,我有\xc2\xa0 package A\xc2\xa0,它取决于\xc2\ commonxa0 \xc2\xa0和\xc2\xa0 common\xc2\xa0依赖于\xc2\xa0 ui-lib,而\xc2\xa0 packageA\xc2\xa0依赖于\xc2\xa0 ui-lib

\n\n

在\xc2\xa0 ui-lib\xc2\xa0中有一个\xc2\xa0 export const context = React.createContext({..})\n,在\xc2\xa0 package A\xc2\xa0和\xc2\xa0 common\xc2\xa0中它将是同一上下文的不同实例(因为在建造)。

\n\n

我现在几乎没有选择,但它们都......不太好:

\n\n

解决方案Aui-lib :重新导出in 中的所有内容common,并packageA仅导入 fromcommon

\n\n

解决方案 B:使用两个上下文提供者package A(一个来自ui-lib,一个来自common

\n\n

更多背景:

\n\n
    \n
  1. 我正在使用没有包锁的 npm
  2. \n
  3. 我需要这个工作同时package AcommonCI 上单独构建
  4. \n
  5. package A并且common位于 monorepo 内部并且ui-lib是外部包,因此我们的仓库中有:
  6. \n
\n\n
\xe2\x80\x94 packages\n\xe2\x80\x94\xe2\x80\x94 packageA (deps on `common` from same monorepo and `ui-lib` )\n\xe2\x80\x94\xe2\x80\x94 common (deps on `ui-lib`)\n
Run Code Online (Sandbox Code Playgroud)\n\n

我能做什么?

\n

tuc*_*hk4 0

如果同一个包有两个不同的实例,那么这个包会在生成的包中重复,这是不好的。

  • 检查ui-lib版本应该是一样的
  • 检查开发人员处的提升和包链接。环境