reactjs - 设置连接的 React 路由器

标签 reactjs redux connected-react-router

我正在尝试根据 t he steps in the README 设置连接 react 路由器.

我的 store.js 中有这个当前代码:

import { createStore } from 'redux';
import reducer from './reducers';
import { middleware, runSagas } from './middleware';

const createSWStore = () => {
  const store = createStore(reducer, middleware);
  runSagas();
  return store;
};

export default createSWStore;

我试图按照设置进行操作,但我不断收到 Uncaught TypeError: rootReducer is not a function浏览器中的错误。

目前该文件如下所示:
import { createBrowserHistory } from 'history';
import { applyMiddleware, compose, createStore } from 'redux';
import { connectRouter, routerMiddleware } from 'connected-react-router';

import reducer from './reducers';
import { middleware, runSagas } from './middleware';

const history = createBrowserHistory();

const createSWStore = () => {
  const store = createStore(
    connectRouter(reducer)(history),
    compose(
      applyMiddleware(
        routerMiddleware(history),
      ),
    ),
    middleware);
  runSagas();
  return store;
};

export default createSWStore;

最佳答案

给 connectRouter history而不是 reducer 。所以:

connectRouter(history)(reducer),

而不是 connectRouter(reducer)(history) .

你说的是import reducer from './reducers';指的是一个包含 reducer 的文件夹。假设 reducers 文件夹有三个文件(index.js、reducer1.js 和 reducer2.js),那么在 reducers 中有这样的东西应该管用:

Index.js

import reducer1 from './reducer1';
import reducer2 from './reducer2';
import { combineReducers } from 'redux';

export default combineReducers({ reducer1, reducer2 });

reducer1.js

const reducer1 = (state = { myState: "foo" }, action) => {
    return state;
};

export default reducer1;

reducer2.js

const reducer2 = (state = { myState: "bar" }, action) => {
    return state;
};

export default reducer2;

关于reactjs - 设置连接的 React 路由器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51991051/

相关文章:

reactjs - React Material UI - 导出多个高阶组件

html - Bootstrap 4 当图片放在右侧时文本会稍微向左移动

javascript - browserify bundle 不处理通过相对路径导入文件

javascript - React-create-app 中的对象解构

reactjs - Redux Sagas 未使用 redux persist 和connected-react-router 输入

javascript - 在 redux 中使用 React Router

reactjs - 后退按钮后 react 路由器 `history` 和 `location` 不匹配

node.js - npm-link 库上的无效 Hook 调用

javascript - 使用 firestore 和 React、redux 在组件安装时立即触发 onClick

javascript - 容器组件是否应该*始终*连接​​到 Redux?