0

我将流星与React Routermeteor-webpackmeteor-useraccounts一起使用。

我想在成功登录后重定向我的用户。

用户帐户文档

var mySubmitFunc = function(error, state){
  if (!error) {
     if (state === "signIn") {
     // Successfully logged in
     // ...
    }
  if (state === "signUp") {
    // Successfully registered
    // ...
    }
  }
};

AccountsTemplates.configure({
   onSubmitHook: mySubmitFunc
});

因为 AccountsTemplates 配置应该在顶级代码中调用,所以meteor.startup.js 当你使用meteor-webpack 时,这个代码必须在里面。

我希望browserHistory.push('/some/path')在“成功登录”状态下调用,但在此级别我无法访问我的反应路由器

我的可能性是什么?

4

1 回答 1

1

在启动客户端文件夹中,我有这样的文件 routes.js。

import React from 'react';
import { Meteor } from 'meteor/meteor';
import { render } from 'react-dom';
import { Router, Route, browserHistory, IndexRoute } from 'react-router';

import { App } from '../../ui/App';
import { NavLayout } from '../../ui/layouts/NavLayout';
import { Index } from '../../ui/pages/Index';
import { TasksList } from '../../ui/pages/TasksList';
import { ReportsList } from '../../ui/pages/ReportsList';
import { TechniciansList } from '../../ui/pages/TechniciansList';
import { ChangePassword } from '../../ui/pages/ChangePassword';

const requireAuth = (nextState, replace) => {
  if (!Meteor.loggingIn() && !Meteor.userId()) {
    replace({
      pathname: '/logout',
      state: { nextPathname: nextState.location.pathname },
    });
  }
};

Meteor.startup(() => {
  render(
    <Router history={ browserHistory }>
      <Route path="/" component={ App }>
        <Route component={ NavLayout }>
          <IndexRoute component={ Index } onEnter={ requireAuth } />
           <Route path="/techniciens" component={ TechniciansList } onEnter={ requireAuth } />
          <Route path="/techniciens/:id/edit" component={ EditTechnician } onEnter={ requireAuth } />
          <Route path="/clients" component={ ClientsList } onEnter={ requireAuth } />
          <Route path="/clients/:id" component={ ClientDetails } onEnter={ requireAuth } />
          <Route path="/appareils" component={ MachinesList } onEnter={ requireAuth } />
          <Route path="/appareils/:id" component={ MachineDetails } onEnter={ requireAuth } />

          <Route path="/change-password" component={ ChangePassword } onEnter={ requireAuth } />
        </Route>

        <Route path="/logout" component={ Connexion } />
      </Route>
    </Router>,
    document.getElementById('react-root')
  );
});
于 2016-09-19T13:10:20.800 回答