Обнаружить предыдущий путь в React router?

Я использую react router. Я хочу обнаружить предыдущую страницу (в том же приложении), откуда я прихожу. У меня есть маршрутизатор в моем контексте. Но я не вижу никаких свойств, таких как "предыдущий путь" или история объекта маршрутизатора. Как мне это сделать?

3 ответов


вы можете сохранить предыдущий путь в componentWillReceiveProps метод жизненного цикла. Логика очень близка к примеру, приведенному в раздел "устранение неполадок" of react-router документы.

<Route component={App}>
  {/* ... other routes */}
</Route>

const App = React.createClass({
  getInitialState() {
    return { prevPath: '' }
  },

  componentWillReceiveProps(nextProps) {
    if (nextProps.location !== this.props.location) {
      this.setState({ prevPath: this.props.location })
    }
  }
})

и в последнее время, доступ к нему со стороны государства.


Если вы используете react-router-redux вы можете создать редуктор, который подключается к событиям, отправленным react-router-redux.

export default function routerLocations(state = [], action) {
  switch (action.type) {
    case "@@router/LOCATION_CHANGE":
      return [...state, action.payload]
    default:
      return state;
  }
}

вы можете передать состояние с помощью <Link> компонент, в этом случае путь:

<Link to={{pathname: '/nextpath', state: { prevPath: location.pathname }}}>Example Link</Link>

вы можете получить доступ prevPath С this.props.location.state в следующем компоненте