私の目標は、「戻る」ボタンを有効にすることですが、ユーザーが戻るルート/パスが特定のカテゴリにある場合のみです。
より正確には、_/<someContent>
_と_/graph/<graphId>
_の2種類のルートがあります。ユーザーがグラフ間を移動すると、_/...
_ルートではなく前のグラフに戻ることができるはずです。これが、単にhistory.goBack()
を実行できない理由です。最初に場所を確認する必要があります。
_const history = createHashHistory();
const router = (
<ConnectedRouter history={history}>
<Switch>
<Route exact path='/' component={Home}></Route>
<Route exact path='/extension' component={Home}></Route>
<Route exact path='/settings' component={Home}></Route>
<Route exact path='/about' component={Home}></Route>
<Route exact path='/search' component={Home}></Route>
<Route exact path='/contact' component={Home}></Route>
<Route path='/graph/:entityId' component={Graph}></Route>
</Switch>
</ConnectedRouter>
);
_
Graph
コンポーネントに次のようなものを実装したいと思います。
_if (this.props.history.previousLocation().indexOf('graph') > -1){
this.props.history.goBack();
} else {
this.disableReturnButton();
}
_
この質問はgoForward()
にも適用されます。該当しない場合は「進む」ボタンを無効にしたいのです。また、ユーザーはthis.props.history.Push(newLocation)
で動きます
明らかに、ユーザーが動き回るときにlocalStorage
やredux store
にログインするなどのサイドトリックの使用を避けたいと思います。
Link
コンポーネントまたはhistory.Push
、現在の場所を別のRoute
コンポーネントに渡すことができます
のような
<Link to={{pathname: '/graph/1', state: { from: this.props.location.pathname }}} />
または
history.Push({
pathname: '/graph/1',
state: {
from: this.props.location.pathname
}
})
そして、あなたはコンポーネントのこの場所をthis.props.location.state && this.props.location.state.from
そしてgoBack
にしたくないかどうかを決めます