Javascript 在节点模块上安装react PropTypes、升级代码和主要升级后,仍然收到PropTypes警告;
我正在做一个React项目,试图摆脱下面关于PropType的警告。我对此做了很多阅读,我对所有依赖项进行了重大更新,安装了react PropType并更新了代码,但我仍然收到了警告 即使从我自己的代码中取出PropTypes并改用这个.props.history.push(“/”)之后,我也会收到相同的警告,因此我不得不认为警告来自我的一个依赖项,但它们都是最新的(除了redux之外)-form@7.4我没有升级它,因为它还向我提供了类似的createComponent警告) 你知道为什么吗 下面是我使用PropTypes和package.json的代码 警告:不推荐通过主React包访问PropTypes, 并将在React v16.0中删除。使用最新的可用v15* 道具类型从npm包取而代之Javascript 在节点模块上安装react PropTypes、升级代码和主要升级后,仍然收到PropTypes警告;,javascript,reactjs,react-proptypes,Javascript,Reactjs,React Proptypes,我正在做一个React项目,试图摆脱下面关于PropType的警告。我对此做了很多阅读,我对所有依赖项进行了重大更新,安装了react PropType并更新了代码,但我仍然收到了警告 即使从我自己的代码中取出PropTypes并改用这个.props.history.push(“/”)之后,我也会收到相同的警告,因此我不得不认为警告来自我的一个依赖项,但它们都是最新的(除了redux之外)-form@7.4我没有升级它,因为它还向我提供了类似的createComponent警告) 你知道为什么吗
你需要这样设置
import React, { Component } from 'react';
import { connect } from 'react-redux';
import PropTypes from 'prop-types';
export default function (AuthRequiredComponent) {
class Authentication extends Component {
componentDidMount() {
if (!this.props.authenticated) {
this.context.router.push('/');
}
}
componentDidUpdate(nextProps) {
if (!nextProps.authenticated) {
this.context.router.push('/');
}
}
render() {
return <AuthRequiredComponent {...this.props} />;
}
}
Authentication.propTypes = {
router: PropTypes.object
}
function mapStateToProps(state) {
return {
authenticated: state.auth.authenticated,
email: state.auth.email
};
}
return connect(mapStateToProps)(Authentication);
}
import React,{Component}来自'React';
从'react redux'导入{connect};
从“道具类型”导入道具类型;
导出默认函数(AuthRequiredComponent){
类身份验证扩展了组件{
componentDidMount(){
如果(!this.props.authenticated){
this.context.router.push('/');
}
}
组件更新(下一步){
如果(!nextrops.authenticated){
this.context.router.push('/');
}
}
render(){
返回;
}
}
身份验证.propTypes={
路由器:PropTypes.object
}
函数MapStateTops(状态){
返回{
已验证:state.auth.authenticated,
电子邮件:state.auth.email
};
}
返回连接(MapStateTops)(身份验证);
}
您好,谢谢您的回复。我做了您建议的更改,现在出现错误“身份验证未定义”。我尝试将代码放在其他位置,但无法使其正常工作。很抱歉,我们需要将其放在函数内部。检查我的更新答案现在我得到了未定义错误的历史记录。正如我所提到的,即使我在代码中不使用PropTypes,而是使用props.history,我也会收到警告,所以它一定来自其他依赖项,但我已经更新了它们……是的,也许。对于未定义的历史,您可以使用这个.context.router.push('/')作为后代,我最终通过在我的文本编辑器Atom上搜索node modules目录中“react”中的“{PropTypes}”,摆脱了讨厌的PropTypes警告,结果中出现了react路由器dom。显然,模块(v4.0)仍然使用react中的PropTypes,升级到v4.3.1后就消除了警告。
"author": "",
"license": "ISC",
"devDependencies": {
"babel-loader": "^8.0.2",
"babel-preset-es2015": "^6.1.18",
"babel-preset-react": "^6.1.18",
"babel-preset-stage-0": "^6.24.1",
"chai": "^3.5.0",
"chai-jquery": "^2.0.0",
"css-loader": "^0.28.11",
"eslint-config-rallycoding": "^3.2.0",
"mocha": "^2.4.5",
"react-addons-test-utils": "^15.0.1",
"style-loader": "^0.21.0",
"webpack-dev-server": "^3.1.8"
},
"dependencies": {
"axios": "^0.18.0",
"babel-core": "^6.2.1",
"babel-polyfill": "^6.26.0",
"babel-preset-stage-1": "^6.1.18",
"cloudinary-core": "^2.5.0",
"cloudinary-react": "^1.0.6",
"dotenv-webpack": "^1.5.5",
"file-loader": "^1.1.11",
"jquery": "^2.2.4",
"jsdom": "^8.1.0",
"lodash": "^4.1.0",
"prop-types": "^15.6.1",
"react": "^15.6.2",
"react-bootstrap": "^0.32.1",
"react-day-picker": "^7.1.6",
"react-dom": "^15.6.2",
"react-dropzone": "^5.0.1",
"react-helmet": "^5.2.0",
"react-redux": "^5.0.7",
"react-router-dom": "^4.0.0",
"react-stripe-elements": "^2.0.1",
"redux": "^4.0.0",
"redux-form": "^6.8.0",
"redux-thunk": "^2.2.0",
"sha1": "^1.1.1",
"webpack": "^4.17.2"
}
import React, { Component } from 'react';
import { connect } from 'react-redux';
import PropTypes from 'prop-types';
export default function (AuthRequiredComponent) {
class Authentication extends Component {
componentDidMount() {
if (!this.props.authenticated) {
this.context.router.push('/');
}
}
componentDidUpdate(nextProps) {
if (!nextProps.authenticated) {
this.context.router.push('/');
}
}
render() {
return <AuthRequiredComponent {...this.props} />;
}
}
Authentication.propTypes = {
router: PropTypes.object
}
function mapStateToProps(state) {
return {
authenticated: state.auth.authenticated,
email: state.auth.email
};
}
return connect(mapStateToProps)(Authentication);
}