我对 React 比较陌生,但在过去一周发现它很有成效。但我遇到了一个难题。
我使用 create-react-app
CLI 构建了一个新项目,其中包含最新的 React v16.x 和相关包。但是,我正在从事的项目还需要许多其他内部项目使用的内部包(因此我不能只是去改变事情)。它是用 React v15.x 构建的。
这就是问题所在:当我从内部包导入
一个组件时,我遇到了 React v16 的问题,该问题已弃用 React.PropTypes
语法(这是在 React v15.x 中仍然可用)。
TypeError: Cannot read property 'oneOf' of undefined
上述 undefined
的上下文是旧版 v15 React 模块中的 React.PropTypes.oneOf(...)
。
那么我如何才能两全其美呢?继续在项目中使用 v16.x,同时能够利用来自另一个时代 (v15.x) 的包中的组件?
谢谢!
最佳答案
下面是基于我留下的评论的答案:
在大多数情况下,如果您坚持使用 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
};
通过简单的查找/替换
,这应该非常容易,您的团队和维护人员会感谢您:)
关于javascript - 在 v16.x 中使用来自旧版本 React 的 React 组件时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48199994/