在v16.x中使用旧版React中的React组件时出现问题

时间:2018-01-11 04:55:02

标签: javascript reactjs

我对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模块中上述undefinedReact.PropTypes.oneOf(...)的上下文。

那么我如何才能拥有两全其美?继续使用项目的v16.x,同时能够利用另一个时代(v15.x)的包中的组件?

谢谢!

1 个答案:

答案 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这应该非常简单,您的团队和维护人员会感谢您:)