narkq / react-yandex-metrika

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

Исправление бага #25 #31

Closed hdkeeper closed 5 years ago

hdkeeper commented 5 years ago

При старте приложения window[accountListName] не успевает получить список аккаунтов. Это и приводит к багу https://github.com/narkq/react-yandex-metrika/issues/25 Моё исправление должно исправить этот баг.

narkq commented 5 years ago

Вас не смущает, что таким образом некоторые события могут молча отбрасываться? Может быть, стоит сделать отдельный массив, который будет хранить эти события до того момента, пока не станет известен id счетчика?

hdkeeper commented 5 years ago

Расскажите, пожалуйста, при каком сценарии использования и какие события могут быть отброшены.

В своём приложении я не заметил потери событий. Хотя я использую только "hit" и "reachGoal".

А вот ошибки в консоли заметил. Они не влияют на учёт событий, но всё-таки хотелось бы их избежать.

narkq commented 5 years ago

А вот ошибки в консоли заметил. Они и не влияют на учёт событий, но хотелось бы этого избежать.

Как же они могут не влиять на учет событий? Если я правильно понимаю, такая ошибка может возникнуть либо при вызове ym (а это значит, была попытка отправки события), либо при вызове withId или withFilter БЕЗ отправки события - но это значит, что когда функция, которую они вернут, будет вызвана, собтие тоже реально не отправится. Разве не так?

hdkeeper commented 5 years ago

Это удивительно, но так оно и есть. Что с ошибками, что без -- но на яндекс уходят одни и те же запросы трекинга. Я сейчас говорю о вызове POST https://mc.yandex.ru/watch/acc_id?...

hdkeeper commented 5 years ago

Раз вы считаете, что быстро эту проблему исправить не выйдет, я закрываю этот PR. Тем более, что я нашёл обход для исходного бага. Пусть он и не такой красивый.

import { accountListName } from 'react-yandex-metrika/lib/constants';
window[accountListName] = [];
narkq commented 5 years ago

Да я бы смержил, честно говоря. Или написал код, который запоминает вызовы перед инициализацией window[accountListName] (но только ближе к вечеру), раз уж Вы разобрались в причине ошибки.

Что с ошибками, что без -- но на яндекс уходят одни и те же запросы трекинга.

Разумеется. Ведь если произошла ошибка, то запрос трекинга не уйдет, а должен бы.

А не поделитесь ли, при вызове которой функции это происходит? А то в #25 пока так никто этого не сделал.

hdkeeper commented 5 years ago

Подробно расписал свой сценарий в описании бага: https://github.com/narkq/react-yandex-metrika/issues/25#issuecomment-512503227