this.props.history.push () больше не работает в React Router v4, какая альтернатива? - PullRequest
2 голосов
/ 08 июня 2019

Я новичок в React, и большинство уроков, которые я вижу по перенаправлению с помощью React Router, похоже, используют вышеупомянутый фрагмент. Я пытаюсь добиться перенаправления пользователя на домашнюю страницу моего сайта после успешного входа в систему. Я пробовал history.push, но, согласно моим поискам в Google, он больше не работает в Router v4. Что я могу сделать в качестве альтернативы? Я открыт для решений как с состоянием, так и без состояния.

Чтобы уточнить, вот рабочий процесс -

  1. Пользователь заполняет текстовое поле своим именем пользователя
  2. Пользователь заполняет текстовое поле своим паролем
  3. Пользователь нажимает кнопку отправки
  4. Для аутентификации пользователя вызывается API с именем пользователя и паролем
  5. API возвращает успех для успешного входа в систему
  6. При успешном входе пользователь перенаправляется на домашнюю страницу

Ответы [ 3 ]

0 голосов
/ 08 июня 2019

history.push (местоположение) все еще можно использовать

https://reacttraining.com/react-router/core/api/history/history-is-mutable

// usually all you need
<Link to="/somewhere"/>

// but you can use a location instead
const location = {
  pathname: '/somewhere',
  state: { fromDashboard: true }
}

<Link to={location}/>
<Redirect to={location}/>
history.push(location)
history.replace(location)
0 голосов
/ 08 июня 2019

history.push('./path') все еще можно использовать в React Router v4, вам нужно добавить withRouter

пример

import React, { Component } from 'react'
import { withRouter } from 'react-router-dom'
import compose from 'recompose/compose'

class Test extends Component {
  render () {
    const { history } = this.props

    return (
     <div>
       <Button onClick={() => history.push('./path')}
     </div>
    )
  }
}

export default compose(
  withRouter,
)(Test)


0 голосов
/ 08 июня 2019

Вы можете использовать компонент Redirect. https://reacttraining.com/react-router/web/api/Redirect

...