我正在尝试使用react路由器dom。当我将组件导出为
class RandomComponent { // component code}
export default RandomComponent;
并将其作为路由中的组件使用如下-
<Route path="/" exact component={RandomComponent} />
我在Chrome控制台收到以下警告-
警告:失败的prop类型:无效的prop组件的类型
对象
提供给路由
,预期的函数
但是当我使用
export class RandomComponent{ // component code}
同样一段代码开始工作,有人能解释一下为什么会这样吗?提前感谢。
这似乎是4.4版之前的react router中的一个错误。
在撰写本文时,最新版本是5.2,使用该版本解决了我的问题:
npm install --save react-router@latest
如果您使用的是react router dom
,您可能还需要更新它。
请注意,如果您遇到此问题,您的react路由器
至少有两个主要版本已过时;而且,可能需要进行大量工作才能使路线在最新版本中工作。小心地跨主要版本边界更新包。
警告:失败的道具类型:无效的道具组件的类型对象提供给路由,预期的功能
传递的道具不是组件,而是对象。您的类应该扩展React。组件
import React, {Component} from 'react'
class RandomComponent extends Component {/*your code*/}
您很可能尝试使用大括号导入组件,即使它是默认导出。
默认导出:
如果您使用指定默认
的导出组件(默认导出),您需要导入它而不需要像这样的花括号:
import RandomComponent from '../pathToComponent';
命名导出:
但是,如果导出组件时未指定default
(名为export),则需要使用大括号将其导入,如下所示:
import { RandomComponent } from '../pathToComponent';
请注意,从单个文件只能有一个默认导出,但从单个文件可以有任意多个命名导出。
我刚刚将React应用程序更新为16.6。0并将脚本响应到2.0。3开始使用lazy时,我在官方文档上遵循一个示例时遇到了这个错误: 失败的道具类型:提供给的类型的无效道具,应为 忽略它,一切似乎都在工作,除了控制台中的这个错误。 以下是我的一些代码: ...} 我在这里做错了什么?
在我的情况下,当使用从react-redux时,反应路由器不会将我的反应组件视为有效组件。并且有一个警告:失败proType:无效prop提供给 Main.js
当我在浏览器上运行我的应用程序时,我会进入控制台: “警告:失败的propType:为‘路由’提供的prop‘组件’无效” 我的路由文件: 我的PView文件: 有人能告诉我为什么会出现这个错误吗?
浏览器控制台始终提供以下警告消息: 检查道具ypes.js:20警告:失败的道具类型:无效的道具
警告:失败的道具类型:提供给的