Я новичок в ReactJs. Это мой код:
var React = require('react');
var ReactDOM = require('react-dom');
var {Route, Router, IndexRoute, hashHistory} = require('react-router');
var Main = require('Main');
ReactDOM.render(
<Router history={hashHistory}>
<Route path="/" component={Main}></Route>
</Router>, document.getElementById('app'));
и компилируем его с помощью webpack. Также я добавил к своим псевдонимам компонент Main. Консоль выдает эти ошибки: я также читал эти ссылки:
React Router failed prop 'history' не определено
Как решить, что история помечена как обязательная, если значение не определено?
Обновление React-Router и замена hashHistory на browserHistory
и множество поисковых запросов в Интернете, но я не смог исправить эту проблему. React Router - это версия 4
источник
<Route...>
операторов в<switch>
оболочку, а не оборачивать их<div>
. Если вы используете<div>
, это делает маршруты включенными, что означает, что если путь может соответствовать двум маршрутам, оба компонента будут отображаться. См. Полную информацию здесь: medium.com/@djoepramono/react-router-4-gotchas-2ecd1282de65Какую версию React Router вы используете? Маршрутизатор версии 4 изменен с передачи класса browserHistory на передачу экземпляра browserHistory, см. Пример кода в новых документах .
Это привлекает множество людей, которые автоматически обновляются; миграционный документ будет недоступен «в любой момент».
Вы хотите добавить это вверху:
import createBrowserHistory from 'history/createBrowserHistory' const newHistory = createBrowserHistory();
а также
источник
customHistory
определяется?Если вы хотите иметь несколько маршрутов, вы можете использовать такой переключатель,
import {Switch} from 'react-router';
тогда
<BrowserRouter> <Switch> <Route exact path="/" component={TodoComponent} /> <Route path="/about" component={About} /> </Switch> </BrowserRouter>
источник
У меня была такая же проблема в ES6, но когда я переключился на библиотеку response-router-dom, проблема была решена. Для всех поклонников ES6, мы идем:
npm install --save react-router-dom
В index.js:
import {HashRouter, Route} from 'react-router-dom'; import App from './App'; ReactDOM.render( <HashRouter> <Route path="/" component={App}/> </HashRouter> , document.getElementById('root') );
источник
In index.js:
илиIn index.jsx:
?Версия 4 React Router изменила несколько вещей. Они сделали отдельные элементы роутера верхнего уровня для разных типов истории. Если вы используете версию 4, вы сможете заменить ее
<Router history={hashHistory}>
на<HashRouter>
или<BrowserRouter>
.Подробнее см. Https://reacttraining.com/react-router/web/guides.
источник
Я также пишу практику входа в систему. А также ответьте на такой же вопрос, как и вы. После дневной борьбы я обнаружил, что
this.props.history.push('/list/')
можно сделать это только вместо того, чтобы тянуть много плагинов. Кстатиreact-router-dom
версия есть^4.2.2
. Благодарность!handleSubmit(e){ e.preventDefault(); this.props.form.validateFieldsAndScroll((err,values)=>{ if(!err){ this.setState({ visible:false }); this.props.form.resetFields(); console.log(values.username); const path = '/list/'; this.props.history.push(path); } }) }
источник
Приведенное ниже работает для меня с "response-router@^3.0.5":
package.json:
"react-dom": "^16.6.0", "react-router": "^3.0.5"
index.js:
import { render } from 'react-dom' import { App } from './components/App' import { NotFound404 } from './components/NotFound404' import { Router, Route, hashHistory } from 'react-router' render( <Router history={hashHistory}> <Route path='/' component={App} /> <Route path='*' component={NotFound404} /> </Router>, document.getElementById('root') )
источник