Я пытаюсь перенаправить пользователя туда, откуда он пришел, при переходе к компоненту входа. На данный момент, на самом деле, я был бы рад просто перенаправить на известный URL-адрес. В данном случае '/dashboard'.
Мое приложение начинается с app.js, а маршруты определены как:
render() {
return (
<div>
<Router>
<div>
<Navbar />
<Route exact path='/' component={Home} />
<Route path='/about' component={About} />
<Route path='/contact' component={Contact} />
<Route path="/login" component={Login} />
<Route path="/register" component={Register} />
<Route path="/profile" component={Profile} />
<Route path="/dashboard" component={Dashboard} />
<Route path="/accounts" component={AccountList} />
<Route path="/account" component={Account}/>
</div>
</Router>
</div>
)
}
Я перешел на страницу входа, и пользователь ввел свои учетные данные. Я проверил вызов WebAPI и добился успеха. Итак, я хочу перенаправить.
Я делаю это:
message = "Welcome, " + Auth.Auth.firstname();
history.push("/dashboard");
Мой импорт для моего экрана входа в систему:
import history from '../../helpers/history.js';
Где history.js просто:
import createHistory from 'history/createHashHistory'
export default createHistory();
Отправка выполнена, но экран не обновляется. URL-адрес просто обновляется до:
.Если я нажму кнопку навигации "Панель инструментов", URL-адрес изменится на:
и на моем экране загружается информационная панель.
Как я должен перенаправлять, проблематично, когда мне нужно?
Почему вы используете
createHashHistory
? А неimport { createHistory } from 'history'
Я не уверен. Я пытался следовать чьим-то инструкциям, но это, похоже, не работает. Должен ли я изменить файл history.js, чтобы использовать history/createHistory?
createHashHistory предназначен для управления URL-адресами с использованием
#
, как в вашем примереhttp://localhost:8080/login#/dashboard
, и createHistory для обычных URL-адресов, таких какhttp://localhost:8080/dashboard
.Когда я изменяю свой history.js, чтобы использовать createHistory (удалить «хэш»), я получаю «_history.createHistory) не является функцией».
@Craig Я думаю, вам нужно использовать:
this.props.history.push('/dashboard');
. Я также не верю, что вам вообще нужно импортировать историю, так как вы должны получить к ней доступ бесплатно.