narkq / react-yandex-metrika

React component for Yandex.Metrika
128 stars 25 forks source link

Новая версия методов #27

Open eseQ opened 5 years ago

eseQ commented 5 years ago

У меня вопрос. Яндекс изменил методы, такие как hit. Сигнатура hit(url, [title[, referer[, params]]]) устарела

Раньше:

var yaCounterXXXXXX = new Ya.Metrika({id: XXXXXX});
//...
yaCounterXXXXXX.hit('#!contacts', {
    title: 'Контактная информация',
    referer: 'http://example.com/#!main'
});

Теперь: ym(XXXXXX, 'hit', url[, options])

Насколько я понимаю, в коде этого пакета используется старая версия?

window[trackerInstanceName(id)][methodName]

Есть какие-нибудь задумки на изменение этого?

narkq commented 5 years ago

Насколько я понимаю, в коде этого пакета используется старая версия?

Не совсем так. Если быть точным, коду этого пакета по идее должно быть все равно, какая версия используется, так как аргументы он передает ровно такие же, как ему передали.

eseQ commented 5 years ago

Хорошо, но ведь он вызывает метод у метрики, т.е. после инициализации объект сохраняется в инстанс window и потом происходит, примерно так: ya.hit, а не ym(XXXXXX, 'hit'); Или я что-то упустил?

narkq commented 5 years ago

Вызывает. Но аргументы-то передает пользователь функции ym, верно? Если будут переданы аргументы по старой сигнатуре, то и вызов будет по-старому, а если по новой - то и вызов будет по-новому.

Или, может быть, вопрос вовсе не про сигнатуру метода hit, а про инициализацию счетчика? Если так, то по идее при использовании новой версии счетчика нужно указать version="2" в пропсах YMInitializer, и вроде бы этого должно быть достаточно. Насколько я понимаю, функция ym - это просто обертка, где делается примерно то же самое, что и в коде этого пакета. Если Вас смущает, что используется объект Ya.Metrika2 напрямую, без обертки ym, можно переделать.

eseQ commented 5 years ago

Я, на самом деле, не искал и не смотрел, что такое ym коде метрики. По моим соображениям методы что были раньше (.hit и тому подобные) теперь не используются, либо по-другому вызываются с помощью ym. Не будит ли отказа от них в будущем и как это повлияет на библиотеку.