react-router-redux
完了からルーティングするためにaction creator async action
を使用せずにこれを解決することがわかった唯一の作業方法は、コンポーネントからアクション作成者にhistory
propを渡し、実行することです。
history.Push('routename');
BrowserRouter
は渡された履歴プロパティを無視するため、browserhistoryでカスタム履歴オブジェクトを使用することはできません。
これを解決する最善の方法は何ですか?
BrowserRouter
を使用する代わりに、次のようなカスタム履歴でRouter
を使用できます。
_import { Router } from 'react-router'
import createBrowserHistory from 'history/createBrowserHistory'
export const history = createBrowserHistory()
<Router history={history}>
<App/>
</Router>
_
その場合、history.Push()
は機能します。 BrowserRouterでは、_history.Push
_は機能しません。これは、_<BrowserRouter>
_が独自の履歴インスタンスを作成し、その変更をリッスンするため、新しいbrowserHistory
を作成できないためです。したがって、別のインスタンスはURLを変更しますが、_<BrowserRouter>
_は更新しません。
カスタムhistory
を作成したら、それをエクスポートしてから_action creator
_にインポートし、それを使用して次のように動的にナビゲートできます。
_import { history } from '/path/to/index';
const someAction = () => {
return dispatch => {
ApiCall().then((res) => {
dispatch({type: 'SOME_CALL', payload: res })
history.Push('/home');
})
}
}
_