我正在尝试进入口头禅,并希望将其与 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 中