Alo*_*ler 21 jsx reactjs react-jsx react-router react-router-redux
我刚开始学习React并且遇到了这个错误.
未捕获的TypeError:无法在新路由器上读取未定义的属性"pathname"
这是我的代码:
var React = require('react');
var ReactDOM = require('react-dom');
var { Route, Router, IndexRoute } = require('react-router');
var hashHistory = require('react-router-redux')
var Main = require('./components/Main');
ReactDOM.render(
<Router history={hashHistory}>
<Route path="/" component={Main}>
</Route>
</Router>,
document.getElementById('app')
);
Run Code Online (Sandbox Code Playgroud)
我以下的教程使用React-Router 2.0.0,但在我的桌面上我使用的是4.1.1.我尝试搜索更改,但未能找到有效的解决方案.
"dependencies": {
"express": "^4.15.2",
"react": "^15.5.4",
"react-dom": "^15.5.4",
"react-router": "^4.1.1",
"react-router-dom": "^4.1.1",
"react-router-redux": "^4.0.8"
Run Code Online (Sandbox Code Playgroud)
Arn*_*las 20
错误是因为React Router v4中的api完全不同.你可以试试这个:
import React from 'react';
import ReactDOM from 'react-dom';
import {
BrowserRouter as Router,
Route
} from 'react-router-dom';
const Main = () => <h1>Hello world</h1>;
ReactDOM.render(
<Router>
<Route path='/' component={Main} />
</Router>,
document.getElementById('app')
);
Run Code Online (Sandbox Code Playgroud)
您可以查看文档以了解它现在的工作原理.
这里我有一个带路由动画的回购.
而在这里,你可以找到一个现场演示.
Bre*_*ung 13
我收到了上面的错误消息,它非常神秘.我尝试了所提到的其他解决方案但它没有用.
结果我不小心忘了to
在其中一个<Link />
组件中包含道具.
希望错误消息更好.简单required prop "to" not found
或类似的东西会有所帮助.希望这可以节省一些遇到同样问题的人.
小智 13
原来import Matter和Router的顺序应该是在前的
不正确
import { BrowserRouter as Route, Router, Routes } from "react-router-dom";
Run Code Online (Sandbox Code Playgroud)
正确的
import { BrowserRouter as Router, Routes, Route } from "react-router-dom";
Run Code Online (Sandbox Code Playgroud)
pic*_*ode 12
只需确保您已添加to
props 即可<Link>
否则您也会收到相同的错误。
添加后它应该看起来像这样:-
<Link to="#">
Run Code Online (Sandbox Code Playgroud)
我有一个不同的原因,但同样的错误并因此遇到了这个问题。把它放在这里以防其他人发生同样的情况,它可能会有所帮助。对我而言,问题是我已更新到react-router-4
并且访问pathname
已更改。
更改: (React-Router-3 及更早版本)
this.props.location.pathname
至: (React-Router-4)
this.props.history.location.pathname
小智 5
使用BrowserRouter而不是Router作为包装器,并且不要忘记导入BrowserRouter
<BrowserRouter>
// Rest of the app.
</BrowserRouter>
Run Code Online (Sandbox Code Playgroud)
当您使用 Link 并忘记提及“/”属性时,也会出现此错误。
归档时间: |
|
查看次数: |
24428 次 |
最近记录: |