我对React比较新,但过去一周发现它很有效率。但我遇到了一个难题。
我从create-react-app
CLI构建了一个新项目,其中包含最新的React v16.x及相关软件包。但是,我正在研究的项目还需要许多其他内部项目使用的内部包(因此我不能只是改变一切)。它是用React v15.x构建的。
问题出现了:当我import
内部软件包中的一个组件时,我遇到了React v16的问题,该问题已弃用React.PropTypes
语法(在React v15.x中仍然可用)
TypeError: Cannot read property 'oneOf' of undefined
传统v15 React模块中上述undefined
为React.PropTypes.oneOf(...)
的上下文。
那么我如何才能拥有两全其美?继续使用项目的v16.x,同时能够利用另一个时代(v15.x)的包中的组件?
谢谢!
答案 0 :(得分:3)
所以这是基于我留下的评论的答案:
在大多数情况下,如果您坚持使用react 15.x
,那么这是一个更安全的选择,直到您依赖的代码也更新为16.x
。只需确保在自己的代码中使用prop-types
包,这样就不必在以后再次执行相同的迁移。
对于遗留代码,您可以开始安装prop-types
包并更改其架构以使用它。而不是:
import React from 'react';
Something.propTypes = {
name: React.PropTypes.string
};
使用:
import PropTypes from 'prop-types';
Something.propTypes = {
name: PropTypes.string
};
使用简单的find/replace
这应该非常简单,您的团队和维护人员会感谢您:)