redux-router pushState不是一个函数

redux-router pushState is not a function

本文关键字:一个 函数 pushState redux-router      更新时间:2023-09-26

从这个项目https://github.com/joshgeller/react-redux-jwt-auth-example#how-it-works,我有一个错误在

import { pushState } from 'redux-router';
...
checkAuth (isAuthenticated) {
  if (!isAuthenticated) {
    let redirectAfterLogin = this.props.location.pathname;
    this.props.dispatch(pushState(null, `/signin?next=${redirectAfterLogin}`));
  }
}
...

上面写着Uncaught TypeError: (0 , _reduxRouter.pushState) is not a function

我不按原样运行项目,我正在实现对我自己的项目的身份验证。我错过什么了吗?

将历史记录添加到Router (createHistory)中很重要。注意:如果你安装了当前的历史记录(v 4.3.0),它没有createHistory函数->请使用较低的(v. 3.*.)

存储:

import {combineReducers} from 'redux'
    import {routerReducer} from 'react-router-redux'
    import { createHistory } from 'history';
    {...more imports}
    const reducer = combineReducers({
        ...rootReducer,
        routing: routerReducer
    });

    function configureStore(initialState) {
        return createStore(
            reducer,
            initialState,
            composeEnhancers(
                applyMiddleware(
                    thunkMiddleware
                ),
                reduxReactRouter({createHistory})
            )
        )
    }
export const store = configureStore(
    {}
);

渲染组件到DOM

import {store} from './store/store';
import {syncHistoryWithStore} from 'react-router-redux'
import { browserHistory } from 'react-router';
{...more imports}
const history = syncHistoryWithStore(browserHistory, store);
ReactDOM.render(
    <Provider store={store}>
        <Router history={history}>
            {...}
        </Router>
    </Provider>,
    document.getElementById('root')
)

现在可以使用pushState-Function

import { pushState } from 'redux-router';
export function logoutAndRedirect() {
    return (dispatch, state) => {
        dispatch(logout());
        dispatch(pushState(null, '/login'));
    }
}
我希望我没有忘记任何东西。->添加您的历史模块到存储