我们使用了一个 React 组件包,它提供了一些可重用的组件,例如 Button、Form、TreeView 等……该包是在 React 14 之上开发的。
我们想使用 React 16 开发一个新的应用程序并利用这个组件包,因为它提供了很多开箱即用的外观和感觉。
我们的代码如下所示。
import React, {Component} from 'react';
import PropTypes from 'prop-types';
import Button from 'reusable-components/button';
export default class MyComponent extends Component {
render() {
return <Button>{this.props.buttonCaption}</Button>;
}
}
MyComponent.propTypes = {
buttonCaption: PropTypes.string
};
使用此代码,当我打开页面时,我收到一条错误消息,提示 TypeError: o.PropTypes is undefined in the browser console。我相信“o.PropTypes”是“React.PropTypes”的混淆版本,我收到此错误是因为在 Button 组件的源代码中某处他们使用了“React.PropTypes”,这在 React 14 之后变得无效。
另一件事是,当我不使用 Button 并且根本不导入它时,一切正常。所以,我很确定问题是由 Button 组件引起的。
我在 index.js 中尝试了以下内容,但没有帮助。
import React from 'react';
import PropTypes from 'prop-types';
React.PropTypes = PropTypes;
有没有办法从 React 16 应用程序中使用 React 14 组件?在最坏的情况下,我们将降级到 14,因为该库尚不支持 16,但我们真的想避免它。