Pull to refresh

Comments 8

UFO just landed and posted this here
Согласен. Сам только узнал, очень полезная фитча. Даже в случае использования своих компонентов позволяет сделать код чище.
Надо будет завести issue странице документации на гитхабе.
Ну почему же ни слова. Пара слов есть. )
vuejs.org/v2/guide/components-edge-cases.html#Programmatic-Event-Listeners

А вообще то — чего нет в документации — это обычно возможности, которые не рекомендуется использовать, потому что они могут исчезнуть или измениться в очередной версии.
А вообще то — чего нет в документации — это обычно возможности, которые не рекомендуется использовать, потому что они могут исчезнуть или измениться в очередной версии.

Эти события порождаются в библиотеке ядра vue, если точнее vue/src/core/instance/lifecycle.js:
export function callHook (vm: Component, hook: string) {
  // #7573 disable dep collection when invoking lifecycle hooks
  pushTarget()
  const handlers = vm.$options[hook]
  const info = `${hook} hook`
  if (handlers) {
    for (let i = 0, j = handlers.length; i < j; i++) {
      invokeWithErrorHandling(handlers[i], vm, null, vm, info)
    }
  }
  if (vm._hasHookEvent) {
    vm.$emit('hook:' + hook) // <- вот тут вот
  }
  popTarget()
}

Не думаю, что события порожденные ядром для каждого компонента в вашем приложении не рекомендуются к использованию т.к.:
— ядро само их использует и слушает
— ну и из приведенного вами пункта документации можно, вывести что компонент порождает событие hook: имя_хука_жизненного_цикла, но вот о том что его можно подслушать на компоненте, увы не сказано.
Не думаю, что события порожденные ядром для каждого компонента в вашем приложении не рекомендуются к использованию

Конечно вы можете их использовать, но разработчики оставляют за собой право в любой момент убрать их, переименовать или изменить логику их работы. Это конечно не критично, но надо об этом помнить. Подобных «скрытых» возможностей во Vue много и Эван сам писал что лучше воздержаться от использования их в коде. Например вот он пишет про использование _uid.

ну и из приведенного вами пункта документации можно, вывести что компонент порождает событие hook: имя_хука_жизненного_цикла, но вот о том что его можно подслушать на компоненте, увы не сказано

1. Компонент порождает события «hook:».
2. События компонента можно слушать.
Неужели вам надо сказать это еще более явно? )
Кстати, интересно, сначала:
`${hook} hook`

а далее:
'hook:' + hook

Есть мнение, что эти строки писали разные люди или в процессе работы программист выучил шаблонные литералы)
Как уживаются события хуков внутри компонента с событиями, определенными снаружи для того же хука?
Нормально, они изолированы экземпляром Vue
Sign up to leave a comment.

Articles