我想使用Perf的东西。似乎如果我这样做:
var React = require('react/addons');
在我自己的模块中,然后库(react-bootstrap,react-router等)最终使用另一个简单的反应副本并且事情中断了。我正在使用browserify。
是否有修复或其他方法可以执行此操作?
答案 0 :(得分:0)
要求react
和react/addons
会为您提供相同的对象。 react/addons
需要react
所做的相同模块(lib/React
),react/addons
甚至会改变该对象,以便任何需要react
的人都可以获得插件。
如果您在捆绑包中最终使用了多个版本的React,那么因为您使用的库具有react
作为依赖项而不是对等依赖项。您应该使用npm dedupe
来避免这种情况。但react-router
具有react
作为对等依赖项,因此react-router
将获得与您的模块(使用插件)相同的react
模块实例。不知道你使用的其他依赖于React的软件包。
答案 1 :(得分:0)
事实证明问题出在我的gulpfile上。关于寻找浏览器垫片的评论的Tx引导我找到解决方案:
我的browserify任务(来自React JS workflow, part 2)在开发期间使用browserify.external(..)构建单独的vendors.js(libs)和main.js(我的应用程序)包,以从main.js中排除libs。我只需添加" react / addons"作为一个外部的lib和"反应"。
这里解释了这个问题: