小编典典

如何防止加载多个React副本?

reactjs

在我以前的Meteor应用程序中,使用browserify和React,所有功能都可以使用,直到我切换到meteor
webpack为止

我在Meteor应用程序中使用react-select,效果很好,但是使用browserify可以防止加载多个react副本,从而避免出现此错误:

错误:始终违规:addComponentAsRefTo(...):只有ReactOwner可以具有引用。您可能会向未在组件的render方法中创建的组件添加引用,或者您已加载多个React副本(详细信息:https://fb.me/react-refs-must-have-owner) 。

我的package.json看起来像这样:

...

"dependencies": {
    "classnames": "^2.1.3",
    "lodash": "^3.10.0",
    "react": "^0.14.6",
    "react-dom": "^0.14.6",
    "react-mixin": "^2.0.1",
    "react-select": "^1.0.0-beta8"
  },

...

Webpack中是否有配置,我可以使用外部调用?尚不完全清楚这意味着什么,但要说一条评论:

externals: {
  'react': 'React',
  'react-dom': 'ReactDOM'
}

阅读 569

收藏
2020-07-22

共1个答案

小编典典

由于您使用的是webpack,因此可以添加用于加载react的别名,如下所示:

// In webpack.config.js

  resolve: {
    alias: {
      react: path.resolve('node_modules/react'),
    },
  },

这样可以避免addComponentAsRefTo(...)错误,并使我们的构建再次成功。但是,由于某种原因,测试构建只能在我们的CI环境中失败,因为它无法解析node_modules/react路径。我认为您不太可能会遇到此特定问题。

2020-07-22