【问题标题】:onBefore event on react-router反应路由器上的 onBefore 事件
【发布时间】:2017-07-23 10:04:32
【问题描述】:

我可以在 react-router 将我重定向到页面之前调用 Meteor 方法吗? 我想记录登录用户关于他/她的页面浏览量的历史记录。

我看到在 Iron-router 中我可以使用 onBeforeAction: function () {}

我找不到 ReactTraining 的 react-router 的类似事件处理程序。 我正在他们的文档中搜索,https://github.com/ReactTraining/react-router/tree/1.0.x/docs

在流星服务器端,我使用的是 simple:json-routes。我还搜索了他们的文档,但找不到与 onBeforeAction 事件处理程序相关的任何内容。

我正在使用 react-router,所以我不能同时使用 Iron-router。那么有没有办法在 Meteor-ReactJS 中记录登录用户的页面浏览量

【问题讨论】:

    标签: javascript reactjs meteor react-router


    【解决方案1】:

    尝试收听浏览器历史记录browserHistory.listen

    但首先您必须使用 getCurrentLocation 检测当前位置

    【讨论】:

    • 你能给个简单的例子吗?
    • browserHistory.listen(function(ev) { console.log('listen', ev.pathname); }); {routes}
    • 我创建了一个配置文件。我将所有路由器组件都编码到该文件中。所以我将只导入 browserHistory 模块,然后将 history={browserHistory} 添加到所有 Router 组件?
    【解决方案2】:

    是的!

    作者:

    • 将重定向逻辑封装在一种方法中与
    • 使用诸如之类的*面向事件编程的库

    路由器助手.js

    import {browserHistory} from 'react-router' ; 
    import {fire} from 'mufa';
    
    export function redirect(to) {
         fire('onBeforeRedirect', to);
         browserHistory.push(to);
         fire('onAfterRedirect', to);
    }
    

    OtherFile-Subscribe-OnBefore.js

    import {on} from 'mufa';
    
    on('onBeforeRedirect', (to) => {
       //Your code here will be running before redirection .
    });
    

    组件调用重定向.js

    import {redirect} from 'router-helper';
    
    
     //...
    
      redirect('/profile'); //<-- This call will trigger also onBefore listeners
    

    【讨论】:

      猜你喜欢
      • 2017-12-06
      • 2017-09-16
      • 2018-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-28
      • 2015-09-01
      • 1970-01-01
      相关资源
      最近更新 更多