reactjs - 在项目中使用两个不同的 React/React-Dom 版本
问题描述
我处于一个非常奇怪的情况,项目结构如下所示:
- 项目
- 迷你项目1
- 迷你项目2
- 节点模块
- 包.json
迷你项目本身就是在 ruby 容器中显示的反应应用程序。因此,当用户转到 /route1 时,它会加载 miniProject1 反应页面。当他们转到 /route2 时,它会转到 miniProject2 页面。
我的任务是更新 MiniProject2 的 react 版本,但不干扰 MiniProject1 或进行任何可能干扰 MiniProject1 的更改。
我按照如下方式安装了 react 和 react-dom:
"react-latest": "npm:react@^16.13.1",
"react-dom-latest": "npm:react-dom@^16.13.1",
这样我就可以专门在 MiniProject2 中导入最新版本
我面临的问题是 react-dom 具有“React”对等依赖项,它试图拉动项目反应而不是我的别名“react-latest”,这是有道理的,但现在我被困在试图弄清楚我如何强制 react-dom 要求我的 react-latest 别名而不是默认的 react peer 依赖项。
我也对潜在的 Webpack 配置解决方案持开放态度。
有什么想法吗?
解决方案
经过一番挖掘,我能够通过执行以下操作来强制 react-dom 使用 react-latest:
包.json
"react": "^16.3.2",
"react-dom": "16.3.3",
"react-dom-latest": "npm:react-dom@^16.13.1",
"react-latest": "npm:react@^16.13.1",
webpack.config.js
module: {
rules: [
{
test: /\/node_modules\/react-dom-latest\/.*.js/,
resolve: {
alias: {
react: path.resolve('./node_modules/react-latest')
}
}
}]},
然后在我需要使用最新反应版本的文件顶部,我像这样导入反应:
import React from 'react-latest'
//or
import ReactDOM from 'react-dom-latest' //for your index
在我需要使用旧反应的文件上,我像这样导入反应:
import React from 'react'
//or
import ReactDOM from 'react-dom' //for your index
这就是所有需要做的!
免责声明:除非您必须并且别无选择,否则不要这样做。它会增加你的包的大小,因为你引入了两个不同版本的 react 和 reactDom
推荐阅读
- android - 如何获得多个底部表,一个在另一个之上正常工作?
- javascript - 在 webpack config 中定义多个 babel 预设配置
- docker - Docker 服务没有响应
- python - NameError:未定义名称“命令”
- javascript - 在 Javascript 中,我的 onEvent 没有被调用,而其他 onEvents 被调用
- jenkins - 有没有办法阻止重复的 Jenkins 失败通知被发送到 slack 或电子邮件?
- javascript - SigmaJS 边缘标签不显示
- android - 与recyclerview android中的自定义视图绑定
- r - 按组检测序列并计算子集的新变量
- amazon-web-services - 使用云形成创建安全组时出现“属性 IpProtocol 不能为空”错误