React Router: Невозможно прочитать свойство "путь" неопределенного
Я только начал изучать React и застрял в этой ошибке.
Uncaught TypeError: Невозможно прочитать свойство "путь" неопределенного на новом маршрутизаторе
Вот мой код:
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')
);
Учебник, который я использовал, использует 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"
Ответы
Ответ 1
Ошибка заключается в том, что api в React Router v4 полностью отличается. Вы можете попробовать следующее:
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')
);
Вы можете просмотреть документацию, чтобы узнать, как она работает сейчас.
Здесь у меня есть репо с анимацией маршрутизации.
И здесь вы можете найти живую демоверсию.
Ответ 2
Я получил сообщение об ошибке выше, и это было чрезвычайно загадочно. Я попробовал другие упомянутые решения, и это не сработало.
Оказывается, я случайно забыл включать to
проп в одном из <Link/>
компоненты.
Желаем, чтобы сообщение об ошибке было лучше. Простая required prop "to" not found
или что-то в этом роде было бы полезно. Надеюсь, это спасет кого-то еще, кто некоторое время столкнулся с той же проблемой.
Ответ 3
У меня была такая же ошибка, и я разрешил ее, обновив history
с 2.xx
до 4.xx
npm история установки @последняя --save
Ответ 4
Из-за этого у меня была другая причина, но та же ошибка. Поместите это здесь, если это случится и для других, и это может помочь. Проблема для меня заключалась в том, что я обновился до react-router-4
и изменился доступ к pathname
.
Изменение: (React-Router-3 и ранее)
this.props.location.pathname
To: (React-Router-4)
this.props.history.location.pathname
Ответ 5
Просто убедитесь, что вы добавляете to
реквизиту в <Link>
в противном случае вы бы также получить ту же ошибку.