У меня есть приложение Meteor, все компоненты пользовательского интерфейса построены с помощью React. Я использую FlowRouter для маршрутизации.Как использовать Yandex.Metrika в приложении Meteor + React?
Теперь я хочу добавить аналитику с помощью сервиса 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]);
Но что такое расслоение яваскрипт и где я должен поместить мой im.init(id)
код?
На самом деле все, что мне нужно, чтобы иметь funsctions для отправки данных в Метрика, такие как hit
(pageview
аналог ПЗУ га), reachGoal
и так далее.
Благодарим вас за ответы!
Дмитрий, спасибо большое за ответ. Остался непонятным следующий момент - где необходимо инициализировать счётчик? Написано, что это нужно делать единожды после "JavaScript bundle". Насчёт экземпляра счётчика я понял, всю документации метрики читал, но применительно к реакту, поясните, пожалуйста .. создайте экземпляр необходимо в каждом элементе (или для каждого шаблона) или для каждого шаблона (а шаблоны в данном случае это компоненты, но которые состоят из других компонентов реакта)? Возможно, проясню свой вопрос: у меня имеется четкая связь "адрес (маршрут) - шаблон" –
надеюсь на ваш ответ –
Насколько я понял, javascript-bundle - это скрипт-тег, где подключается ваш js. В двух словах - рендерить компонент и делать 'ym.init([xxxxx])' нужно единожды после _реальной_ загрузки страницы. Однако, если по какой-то причине, вы несколько раз вызовете , то ничего страшного не произойдет. Если же вызвать несколько раз 'ym.init([xxxxx])', то, судя по коду, данные будут задваиваться –