(+ Reduxのルータに反応):周り<Provider /> outsideまたは<Router /> outside>?通常
<Provider store={store}>
<Router>
<App />
</Router>
</Provider>
なぜ、他の方法を?
<Router>
<Provider store={store}>
<App />
</Provider>
</Router>
質問をフォローアップ:LOGIN_SUCCESS
アクションが発生したときに、セットアップ認証に、我々はwindow.localStorage
に返されたトークンを保存し、ページをリダイレクトする必要があります。だから私はReduxのミドルウェア内部の成功ハンドラを記述します。
const localStorageMiddleware = store => next => action => {
if (action.type === 'LOGIN_SUCCESS') {
if (!action.payload.error) {
window.localStorage.setItem('jwt', action.payload.token)
}
} else if (action.type === 'LOGOUT_SUCCESS') {
window.localStorage.setItem('jwt', '')
}
next(action)
}
その後、私は私がどのように行う、(私はredux
コード内location
へのアクセスを取得しようと、最初の質問をする理由です)リダイレクトを行うにhistory.push
にアクセスする必要性を感じますそうする?私はactions
ファイル、ないreducers
にロジックを取ると思います
// top-most line of the reducer
import { browserHistory } from 'react-router';
const localStorageMiddleware = store => next => action => {
if (action.type === 'LOGIN_SUCCESS') {
if (!action.payload.error) {
window.localStorage.setItem('jwt', action.payload.token);
browserHistory.push('/');
}
} else if (action.type === 'LOGOUT_SUCCESS') {
window.localStorage.setItem('jwt', '')
}
next(action)
}
:
<Provider store={store}>
<Router>
<App />
</Router>
</Provider>
リダイレクト:
あなたは 'react-router'のどのバージョンを使用していますか? – ickyrr