如何在Meteor + React应用程序中使用Yandex.Metrika?

问题描述:

我有一个Meteor应用程序,所有UI组件都是用React构建的。我使用FlowRouter进行路由。如何在Meteor + React应用程序中使用Yandex.Metrika?

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

我发现这个包阵营: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,比如hitpageview analog rom ga),reachGoal等等。

谢谢你的回答!

为什么我需要这个例子的组件?

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

如何metrika作品: 站长(你)插入小块的js代码(加载)的所有网页。此代码将主代码添加到异步脚本中(它比装载程序稍大)并创建metrika对象实例('counter') - new Ya.Metrika(...params)。实例将在名为yaCounterXXXXX的全局变量中可用,其中XXXXX是您计数器的ID。

因此,<YM />组件是来自上一段的加载程序。

其实所有我需要的是有funsctions将数据发送到 Metrika,如击(浏览量模拟ROM GA),reachGoal等。

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

我希望我帮你。

+0

Дмитрий,спасибобольшоезаответ。 Осталсянепонятнымследующиймомент - гденеобходимоинициализироватьсчётчик? Написано,чтоэтонужноделатьединождыпосле“JavaScript bundle”。 Насчётэкземплярасчётчикаяпонял,всюдокументацииметрикичитал,ноприменительнокреактупоясните,пожалуйста..создаватьэкземплярнеобходимовкаждомэлементе(коихможетбытьмноговодномшаблоне)илидлякаждогошаблона(ашаблонывданномслучаеэтокомпоненты,но которыесостоятиздругихкомпонентовреакта)? Возможнопрояснюсвойвопрос:уменяимеетсячеткаясвязь “адрес(路线) - шаблон” –

+0

надеюсьнавашответ –

+0

Насколькояпонял,JavaScript的束 - это脚本тег,гдеподключаетсявашJS。 Вдвухсловах - рендеритькомпонентиделать'ym。的init([XXXXX])'需要_realnoy_后一次加载页面。但是,如果由于某种原因,你反复调用,没有什么可怕的会发生。如果多次触发'ym.init([XXXXX])',然后,根据代码,数据将zadvaivatsya –