流星与口头禅。横切关注点

时间:2016-03-17 14:35:51

标签: javascript meteor jsx cross-cutting-concerns

我正在使用口头禅在流星中开发应用程序。这是requireLogin模块的routes.jsx。我希望能够在其他模块的操作和路由中使用redirectUsersimport React from 'react'; import {mount} from 'react-mounter'; import Login from './containers/login'; import Register from './containers/register'; import App from '/client/modules/core/components/app.jsx'; export default function (injectDeps,{FlowRouter,Meteor,LocalState}) { let userRoutes = FlowRouter.group({ prefix:'/user', name:'user' }); const AppCtx = injectDeps(App); const redirectUsers = () => { if(Meteor.userId()){ const path = LocalState.get('INTERRUPTED_REQUEST_PATH') ? LocalState.get('INTERRUPTED_REQUEST_PATH') : '/joke/'; FlowRouter.go(path); return; } } const requireLogin = (path) => { if(!Meteor.userId()){ LocalState.set('INTERRUPTED_REQUEST_PATH',path); FlowRouter.go('/user/login'); return; } } userRoutes.route('/', { triggersEnter: [(context,redirect) => { if(!Meteor.userId()){ requireLogin('/user/login'); } }], action() { } }); userRoutes.route('/login',{ triggersEnter: [(context,redirect) => { redirectUsers(); }], action() { mount(AppCtx, { content: () => (<Login />) }); } }); } 。或者一般来说,如何在不违反mantra架构的情况下处理横切问题?

{{1}}

1 个答案:

答案 0 :(得分:1)

我一直在/clients/modules/core/libs/中定义共享函数并在任何地方使用它。当你在core模块之外使用函数时,我打破了封装,但我还没有找到更好的方法。如果你知道一个,请告诉我。

此外,在triggersEnter中重定向和验证被视为反模式。

以下是我的开源Mantra应用Vym的真实例子。请看位:

如果您想要查看更多内容,则可以使用回复here

您也可以使用此reusable auth composer并在组件级别处理身份验证。