无法读取未定义的属性(读取“位置”)

Posted

技术标签:

【中文标题】无法读取未定义的属性(读取“位置”)【英文标题】:Cannot read properties of undefined (reading 'location') 【发布时间】:2021-12-20 18:27:12 【问题描述】:

我写了这段代码:

import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
import  BrowserRouter as Router, Route  from "react-router-dom";
import AboutPage from './pages/aboutPage'

ReactDOM.render(
  <React.StrictMode>
    <Router>
    <Route path='/' component= App />
    <Route path='/about' component= AboutPage />
    </Router>
  </React.StrictMode>,
  document.getElementById('root')
);


为什么它不起作用?我收到此错误:

我该如何解决? React v17.0.2、React-router v5.2.1、React-router-dom v6.0.1

【问题讨论】:

向我们展示实际的Router.js 正如错误所说,错误来自“Router.js”文件,其中在尝试读取“位置”值时未定义属性“历史”值。 @k-wasilewski jsfiddle.net/mustmusk/kcpmxzaw 【参考方案1】:

Route 只能用作Routes 元素的子元素,从不直接渲染。因此,只需将您的 &lt;Route&gt; 包装在 &lt;Routes&gt; 中即可

<Router>
  <Routes>
    <Route path='/' component= App />
    <Route path='/about' component= AboutPage />
  </Routes>
</Router>

【讨论】:

做到了。没有结果。 路由器只是找不到当前位置,我不知道为什么以及如何解决它 你在同一个项目中使用“React router v5”和“react-router-dom v6”吗?!【参考方案2】:

withRouter 包裹您的组件(您使用props.location 的组件)以注入前者:

import  withRouter  from 'react-router-dom';

class MyComponent extends React.Component 
...


export default withRouter(MyComponent);

【讨论】:

"尝试导入错误:'withRouter' 未从 'react-router-dom' 导出。"

以上是关于无法读取未定义的属性(读取“位置”)的主要内容,如果未能解决你的问题,请参考以下文章

地理位置未捕获类型错误:无法读取未定义的属性“坐标”

无法读取未定义反应挂钩的属性“位置”

React-router-dom:TypeError:无法读取未定义的属性(读取“位置”)

react-router v5.1.0 无法读取未定义的属性“位置”,

jQuery Geolocation:无法读取未定义的属性“坐标”

未捕获的类型错误:无法读取未定义的属性“authenticateClientAndRetrieveSessionId”