1

エラーが発生したときにreduxアクション内でリダイレクトしようとしています。私はreact-router-reduxを設定しようとしましたが、次のエラーが発生しています。react-router-reduxが新しいURLをプッシュできません。

Uncaught TypeError: Cannot read property 'push' of undefined 
    at middleware.js:29 
    at index.js:14 
    at index.js:100 
    at dispatch (applyMiddleware.js:45) 
    at reports-actions.js:88 
    at index.js:11 
    at Object.dispatch (index.js:100) 
    at ReportTemplate.componentWillMount (ReportTemplate.js:54) 
    at ReactCompositeComponent.js:348 
    at measureLifeCyclePerf (ReactCompositeComponent.js:75) 

これは、ルータとreduxの設定方法です。定義されたpushメソッドがないので

const reducers = combineReducers({ 
    customer: transactionTrackerCustomerReducer, 
    hierarchy: transactionTrackerHierarchyReducer, 
    item: transactionTrackerItemReducer, 
    tender: transactionTrackerTenderReducer, 
    transaction: transactionTrackerTransactionReducer, 
    transactionTracker: transactionTrackerReducer, 
    session: userSessionReducer, 
    reports: reportsReducer 
}); 
const middleware = applyMiddleware(createLogger(), thunk, routerMiddleware(hashHistory)); 
const store = createStore(reducers, compose(middleware)); 
ReactDOM.render(
    <Provider store={store}> 
     <Router history={hashHistory}> 
      <MuiThemeProvider muiTheme={getBrandTheme()}> 
       <Switch> 
        <Route path="/login" component={Login}/> 
        <Route path="/" render={props => (<App/>)}/> 
       </Switch> 
      </MuiThemeProvider> 
     </Router> 
    </Provider> 
    , document.getElementById('root') 
); 

私はあなたがエラーを取得しているこの

export function fetchStoreHierarchy() { 

    return function (dispatch) { 

     // other code .... 
     dispatch(push('/login')); 
    } 
} 

答えて

1

react-router-reduxバージョン4から、あなたは、routerActionsをインポートする必要があります。

import { routerActions } from 'react-router-redux' 

そして、それはよう、push関数の呼び出し:

return function (dispatch) { 
    // other code .... 
    dispatch(routerActions.push('/login')); 
} 
0

ようにそれを使用しようとしている.....(「/ログイン」)のようなrouteActions.pushを呼び出してみてくださいこれは次のように...

import { routeActions } from 'react-router-redux'; 
dispatch(routeActions.push('/login')); 
関連する問題