2

我正在尝试进入口头禅,并希望将其与 react、redux 和流路由器一起使用。但是这次我不能正确地获得redux。

Github:https ://github.com/saschb2b/kickstart-mantrajs-meteor-react

我在流路由器中注入了上下文和动作

模块/核心/routes.jsx

export default function (injectDeps, { FlowRouter }) {
  const MainLayoutCtx = injectDeps(MainLayout);

 FlowRouter.route('/news', {
    action() {
      mount(MainLayoutCtx, {
        toolbar: <DefaultToolbar title="News" />,
        content: <NewsOverview />,
      });
    },
  });

但是在调度一个动作时,会使用完整的上下文而不是所需的值。模块/核心/组件DefaultToolbar.jsx:42

this.props.store.dispatch(this.props.toggleMenu(this.props.menuOpen));

应该打电话{type: "MENU_TOGGLE", open: false}

相反,它调用 {type: "MENU_TOGGLE", open: Object}where Object 是 Meteor、Tracker、FlowRouter 和 Store 的完整上下文

您可以通过克隆我的项目来重新生成它,导航到 /news,将窗口大小调整为 <1024(显示汉堡按钮)并单击汉堡按钮。控制台现在应该吐出一堆。

我用错了redux吗?我的商店没有正确初始化吗?如果你有替代品或小费,我会接受一切

编辑:必须改变我如何使用动作创建者的方法。目前看来还不错。但是如果我的状态发生变化,我的组件不会重新呈现。任何想法?最新的更改在 repo 中

4

0 回答 0