(она так же и разработчик в команде vue js), сказала , что если человек в пропсы прокидывает функции - это плохо и это антипаттерн(такой код она в прод не пускает) , но только не объяснила почему , Гугл ничего особо не дал. Мб кто можешь сказать почему это плохо ? (Кроме - "нуууу, во вью лучше использовать эвенты)
Чисто моё мнение, основанное только на моей практике: Компонент, который в пропсах ожидает функции, труднее переиспользовать. Например, я хочу использовать твой компонент, но я не хочу функции пробрасывать. Но мне придётся создать пустые функции и бросать их в пропсах. В случае же $emit я как пользователь твоего компонента могу выбирать, на какие $emit я хочу подписываться, а на какие не хочу. Твой компонент становится проще использовать
Могу добавить еще что сам движок v8 не сможет оптимизировать это нормально
ты можешь у нее спросить напрямую, она есть в nuxt чатике, nataliaTeplukhina
Самая функция не станет горячее по причине постоянного ре рендеринга при изменение данных
Если ты не хочешь пробрасывать функции , но хочешь использовать компонент, то не очень то и хочешь ? Ну и плюс можно учесть этот кейс в компоненте , что какие то функции могут быть не отправлены (а мб это доп работа ?) Но с другой стороны , если делать через события и я хочу прокинуть через 2 компонента , то получается я два раза буду писать одинаковые функции , которые генерируют эвенты ? Вместо того , чтобы просто пробросить функцию
Ок, спасибо, напишу
Ок , надо будет разобраться с этим подробнее , спасибо !
Ну по этой причине надо использовать state
А кстати, как это онлайн кеширование работает? Прям при сборке функция кучу раз прогоняется и оптимизируется? Если нет, то зачем оно нужно - ведь далеко не каждая функция запускается по тысячи раз за одну сессию. Помогает ли ts в этом? Сколько не читал, так и не понял этот момент.
Т.е если ты пробрасываешь через даже 2 компонента то state ?
ты сможешь обратится к state откуда хочешь (vuex)
Это то понятно. Но тогда Стейт же раздувается до небес и надо это менеджерить
если невдаватся в подробности сначала кодируется в байт код а потом компилятор jit если функция много рас вызывается оптимизирует ее и превращает в горячую
для этого есть namespace
Да , и эта практика лучше чем пробрасывать эвенты через 2 компонента?
Создается namespace в vuex и работаешь только с компонентами которыми хочешь на другую фичу вешаешь другой namespace и нету проблем администрирования
Ну то есть непосредственно в работе? То есть с пропсами по сути заморачиваться смысла мало, если функция там статичная и компонент рендерится один раз, например?
ну по факту подбрасывание функции props антипатерн лучше решение использовать state(vuex)
Согласен, мне просто инлайн кеш интересен)
Это уже архитектура тут просто глянь доклад новый по v8
Во Vue3 вообще composition-api позволит простые штуки без всяких сторов пробрасывать
Надо помнить что там новая архитектура на proxy
Ну а чем это сильно скажется на разработке?
Если кому то интересно , что ответил автор данного высказывания: "Потому что это нарушает инкапсуляцию компонентов и unidirectional data flow Особенно если переданный метод меняет состояние родителя Эмитьте ивенты, слушайте и дергайте метод" Ок, я с ней согласен
Обсуждают сегодня