Обнаружить предыдущий путь в 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
в следующем компоненте