reactjs - TypeError: Cannot read property 'key' of undefined
问题描述
am trying to do a route system with react and react-pose for animating route and parsing the location object return me an error can you please help me ?? this is the code the error is in the Routecontainer
import React, { Component } from "react";
import {BrowserRouter, Route, NavLink} from "react-router-dom";
import "./App.css";
import HomeComponent from "./Components/HomeComponent"
import ContactComponent from "./Components/ContactComponent"
import AboutComponent from "./Components/AboutComponent"
import NavBar from "./Components/NavigationBar"
import posed, {PoseGroup} from "react-pose";
const RouteContainer = posed.div({
enter: { opacity: 1, delay: 300, beforeChildren: true },
exit: { opacity: 0 }
});
class App extends Component {
render() {
let {location} = this.props;
return (
<BrowserRouter>
<div>
<NavBar/>
<PoseGroup>
<RouteContainer key={location.key}>
<switch location={location}>
<Route path="/" component={HomeComponent}/>
<Route path="/About" component={AboutComponent}/>
<Route path="/Contact" component={ContactComponent}/>
</switch>
</RouteContainer>
</PoseGroup>
</div>
</BrowserRouter>
);
}
}
export default App;
解决方案
您正在尝试访问 Route 组件之外的位置对象。由于您<BrowserRouter>
在 App 组件内部使用,因此HomeComponent
,AboutComponent
和ContactComponent
将可以访问位置对象,但不能访问<App />
.
您可以在此处阅读有关 react-router 在何处提供位置对象的更多信息
您可以通过创建一个返回以下内容的包装器组件来解决此问题:
return (
<BrowserRouter>
<Route path="/" component={App} />
</BrowserRouter>
);
然后您可以从
Component<BrowserRouter>
内部移除该位。<App />
该路径/
将在所有路由上匹配,因为exact={true}
它没有作为道具传递。
推荐阅读
- javascript - 当我将它们放在旋转木马外面时,按钮不起作用
- sql - Oracle regex_replace ' 来自值
- python - 如何在不使用任何日期或时间库的情况下对小时和分钟字符串求和
- python - 如何使用 pyarmor 修复 UnicodeEncodeError?
- apache - 如何将流量定向到两个不同的子文件夹?
- boost - 在 Fedora 上使用 MinGW64 为 Windows 编译 boost-python 1.73.0
- typescript - 关于 Vue 3 + TypeScript 和 Augmenting-Types-for-Use-with-Plugins 的问题
- python - 用 uvicorn 重新加载标志:我们可以排除某些代码吗?
- javascript - 承诺结果数据不能使用
- android - 如何在 kotlin 的这个脚本中添加 R 字符串?