【问题标题】:How to use Yandex.Metrika in Meteor+React app?如何在 Meteor+React 应用中使用 Yandex.Metrika?
【发布时间】:2017-04-29 16:44:58
【问题描述】:

我有一个 Meteor 应用程序,所有 UI 组件都是用 React 构建的。我使用 FlowRouter 进行路由。

现在我想使用 Yandex.Metrika 服务添加分析。

我为 React 找到了这个包:https://github.com/narkq/react-yandex-metrika

可是我要怎么用呢?为什么我需要此示例中的 <YM /> 组件?

import {Initializer as YM} from 'react-yandex-metrika';

// Use the initializer to add the script to your page somewhere.
var MyComponent = React.createClass({
  render: function() {
    return (
      <div>
        // SNIP
          <YM />
        // SNIP
      </div>
    );
  }
});

我应该在哪里初始化跟踪器对象?我读到了:

// This is supposed to be executed only in browser and only once.
// Because of that, the most sensible place for this code is right after you javascript bundle.
ym.init([987654321]);

但什么是 javascript 包,我应该将我的 im.init(id) 代码放在哪里?

其实我所需要的只是将数据发送到 Metrika 的功能,例如hit (pageview 模拟 rom ga)、reachGoal 等等。

感谢您的回答!

【问题讨论】:

    标签: reactjs meteor web-analytics flow-router yandex-metrika


    【解决方案1】:

    出于什么原因我需要此示例中的组件?

    你需要它来加载 metrika 的主代码

    metrika 的工作原理: 网站管理员(您)将一小段 js 代码(加载器)插入所有页面。此代码将异步脚本附加到主代码(它比加载程序大一点)并创建 metrika 对象('counter')的实例 - new Ya.Metrika(...params)。实例将在名为 yaCounterXXXXX 的全局变量中可用,其中 XXXXX 是您的计数器 ID。

    所以,&lt;YM /&gt; 组件是上一段的加载器。

    实际上,我所需要的只是具有将数据发送到的功能 Metrika,如hit(pageview analog rom ga)、reachGoal等。

    在自述文件的底部有关于此的文档。但是我没有看到针对该方法的按计数器 ID 过滤。也许我做了一个公关来添加这个功能。在任何情况下,您都可以像这样使用全局变量 yaCounterXXXXX yaCounterXXXXX.hit(url, params)yaCounterXXXXX.reachGoal(goalId, params)

    希望对你有所帮助。

    【讨论】:

    • Дмитрий, спасибо большое за ответ。 Остался непонятным следующий момент - где необходимо инициализировать счётчик? Написано, что это нужно делать единожды после “JavaScript 包”。 Насчётэкземплярасчётчикаяпонял,всюдокументацииметрикичитал,ноприменительнокреактупоясните,пожалуйста..создаватьэкземплярнеобходимовкаждомэлементе(коихможетбытьмноговодномшаблоне)илидлякаждогошаблона(ашаблонывданномслучаеэто компоненты, но которые состоят из других компонентов реакта)? Возможно проясню свой вопрос: у меня имеется четкая связь "адрес (路线) — шаблон"
    • надеюсь на ваш ответ
    • Насколько я понял,javascript-bundle - это script-тег,где подключается ваш js。 В двух словах - рендерить компонент и делать ym.init([xxxxx]) нужно единожды после реальной загрузки страницы。 Однако, если по какой-то причине, вы несколько раз вызовете , то ничего страшного не произойдет。 Если же вызвать несколько раз ym.init([xxxxx]), то, судя по коду, данные будут задваиваться
    • под реальной я подразумеваю не SPA-переход с помощью history api, а прям настоящую загруку
    猜你喜欢
    • 2016-12-17
    • 2016-05-09
    • 2021-04-02
    • 2018-05-23
    • 1970-01-01
    • 1970-01-01
    • 2016-05-09
    • 2018-02-11
    • 2016-08-12
    相关资源
    最近更新 更多