Я использую реакцию с маршрутизатором реакции.Некоторые из моих компонентов имеют определенные под-маршруты, поэтому я хочу передать им обратный вызов, который позволяет вернуться к определенному маршруту / компоненту.Я хочу избежать передачи строки определенному маршруту (из-за зависимости при изменении маршрутизации в коде).Поэтому я предпочитаю передать обратный вызов и заполнить его значением match.url.
Но это не работает: вместо передачи значения match.url всегда ссылается на текущий маршрут.
Родительский компонент (упрощенный):
export class ParentComponent extends React.Component {
render() {
const { history, match, contentId } = this.props;
return (
<div>
<div>
<div>Block 1</div>
<div>Block 2</div>
<div>Block 3</div>
</div>
{contentId && <MyChildComponent content={contentId} goBack={() => history.push(match.url)} />}
</div>
);
}
}
Мой дочерний компонент (упрощенный):
export class MyChildComponent extends React.PureComponent {
render() {
return (
(
<React.Fragment>
<div role="dialog" onClick={this.props.goBack} />
</React.Fragment>),
);
}
}
Мой маршрутизатор:
const Routes = () => (
<Router history={createBrowserHistory()}>
<div>
<Route path="/result/:contentId?" component={ParentComponent} />
</div>
</Router>
);
Поэтому, когда я перехожу к / result, я вижу - как и ожидалось - все, кроме дочернего компонента.При переходе к / result / someId я вижу дочерний компонент, но goBack ссылается только на текущую страницу вместо предыдущей.