Javascript 在v16.x中使用旧版本React中的React组件时出现问题
我相对来说还没有反应过来,但在过去的一周里,我发现这很有成效。但我遇到了一个难题 我使用Javascript 在v16.x中使用旧版本React中的React组件时出现问题,javascript,reactjs,Javascript,Reactjs,我相对来说还没有反应过来,但在过去的一周里,我发现这很有成效。但我遇到了一个难题 我使用createreact-appCLI构建了一个新项目,其中包含了最新的react v16.x和相关软件包。然而,我正在从事的项目还需要一个内部包,供许多其他内部项目使用(因此我不能只是去改变事情)。它是用React v15.x构建的 TypeError: Cannot read property 'oneOf' of undefined 问题是:当我从内部软件包中导入组件时,我遇到了React v16的问题
createreact-app
CLI构建了一个新项目,其中包含了最新的react v16.x和相关软件包。然而,我正在从事的项目还需要一个内部包,供许多其他内部项目使用(因此我不能只是去改变事情)。它是用React v15.x构建的
TypeError: Cannot read property 'oneOf' of undefined
问题是:当我从内部软件包中导入组件时,我遇到了React v16的问题,它的React.PropTypes
语法已经弃用(在React v15.x中仍然可用)
上述未定义的上下文是旧式v15 React模块中的React.PropTypes.oneOf(…)
那么,我如何做到两全其美呢?在项目上继续使用v16.x,同时能够利用来自另一个时代(v15.x)的包中的组件
谢谢 下面是根据我留下的评论得出的答案:
在大多数情况下,如果您坚持使用react15.x
,直到您所依赖的代码也更新为16.x
,这是一个更安全的选择。只需确保在自己的代码中使用prop-types
包,这样以后就不必再进行相同的迁移
对于遗留代码,您可以开始安装prop-types
包,并更改其模式以使用该包。而不是:
import React from 'react';
Something.propTypes = {
name: React.PropTypes.string
};
使用:
用一个简单的查找/替换应该很容易,您的团队和维护人员会感谢您:)最好坚持使用react15.x
,直到您的内部项目也升级到16,但您可以将所有遗留代码更改为使用与react now分离的prop type
包,并为以后轻松升级到16铺平道路。我想你提到了几个合理的选择。如果你想把它写下来作为答案,我会把它标为“已回答”,然后到此为止。谢谢我最终还是将我的项目降级到了最新的v15版本的ReactJS。为了实验/完整性,我还将依赖项项目从React.PropTypes更新为PropTypes
,如您所述,以实现将来的兼容性。再次感谢!
import PropTypes from 'prop-types';
Something.propTypes = {
name: PropTypes.string
};