169 похожих чатов

Всем привет. В одном из подскастов русскоязычная разработчица из гитлаба

(она так же и разработчик в команде vue js), сказала , что если человек в пропсы прокидывает функции - это плохо и это антипаттерн(такой код она в прод не пускает) , но только не объяснила почему , Гугл ничего особо не дал. Мб кто можешь сказать почему это плохо ? (Кроме - "нуууу, во вью лучше использовать эвенты)

26 ответов

17 просмотров

Чисто моё мнение, основанное только на моей практике: Компонент, который в пропсах ожидает функции, труднее переиспользовать. Например, я хочу использовать твой компонент, но я не хочу функции пробрасывать. Но мне придётся создать пустые функции и бросать их в пропсах. В случае же $emit я как пользователь твоего компонента могу выбирать, на какие $emit я хочу подписываться, а на какие не хочу. Твой компонент становится проще использовать

Vite4eg
Чисто моё мнение, основанное только на моей практи...

Могу добавить еще что сам движок v8 не сможет оптимизировать это нормально

ты можешь у нее спросить напрямую, она есть в nuxt чатике, nataliaTeplukhina

Nikita Derevskov
Почему ?

Самая функция не станет горячее по причине постоянного ре рендеринга при изменение данных

Nikita-Derevskov Автор вопроса
Vite4eg
Чисто моё мнение, основанное только на моей практи...

Если ты не хочешь пробрасывать функции , но хочешь использовать компонент, то не очень то и хочешь ? Ну и плюс можно учесть этот кейс в компоненте , что какие то функции могут быть не отправлены (а мб это доп работа ?) Но с другой стороны , если делать через события и я хочу прокинуть через 2 компонента , то получается я два раза буду писать одинаковые функции , которые генерируют эвенты ? Вместо того , чтобы просто пробросить функцию

Nikita-Derevskov Автор вопроса
alex Grinvich
Самая функция не станет горячее по причине постоян...

Ок , надо будет разобраться с этим подробнее , спасибо !

alex Grinvich
Самая функция не станет горячее по причине постоян...

А кстати, как это онлайн кеширование работает? Прям при сборке функция кучу раз прогоняется и оптимизируется? Если нет, то зачем оно нужно - ведь далеко не каждая функция запускается по тысячи раз за одну сессию. Помогает ли ts в этом? Сколько не читал, так и не понял этот момент.

Nikita-Derevskov Автор вопроса
alex Grinvich
Ну по этой причине надо использовать state

Т.е если ты пробрасываешь через даже 2 компонента то state ?

Nikita Derevskov
Т.е если ты пробрасываешь через даже 2 компонента ...

ты сможешь обратится к state откуда хочешь (vuex)

Nikita-Derevskov Автор вопроса
alex Grinvich
ты сможешь обратится к state откуда хочешь (vuex)

Это то понятно. Но тогда Стейт же раздувается до небес и надо это менеджерить

Ivan Tseloban
А кстати, как это онлайн кеширование работает? Пря...

если невдаватся в подробности сначала кодируется в байт код а потом компилятор jit если функция много рас вызывается оптимизирует ее и превращает в горячую

Nikita-Derevskov Автор вопроса
alex Grinvich
для этого есть namespace

Да , и эта практика лучше чем пробрасывать эвенты через 2 компонента?

Nikita Derevskov
Да , и эта практика лучше чем пробрасывать эвенты ...

Создается namespace в vuex и работаешь только с компонентами которыми хочешь на другую фичу вешаешь другой namespace и нету проблем администрирования

alex Grinvich
если невдаватся в подробности сначала кодируется в...

Ну то есть непосредственно в работе? То есть с пропсами по сути заморачиваться смысла мало, если функция там статичная и компонент рендерится один раз, например?

Ivan Tseloban
Ну то есть непосредственно в работе? То есть с про...

ну по факту подбрасывание функции props антипатерн лучше решение использовать state(vuex)

alex Grinvich
ну по факту подбрасывание функции props антипатерн...

Согласен, мне просто инлайн кеш интересен)

Ivan Tseloban
Согласен, мне просто инлайн кеш интересен)

Это уже архитектура тут просто глянь доклад новый по v8

alex Grinvich
ну по факту подбрасывание функции props антипатерн...

Во Vue3 вообще composition-api позволит простые штуки без всяких сторов пробрасывать

Vite4eg
Во Vue3 вообще composition-api позволит простые шт...

Надо помнить что там новая архитектура на proxy

alex Grinvich
Надо помнить что там новая архитектура на proxy

Ну а чем это сильно скажется на разработке?

Nikita-Derevskov Автор вопроса

Если кому то интересно , что ответил автор данного высказывания: "Потому что это нарушает инкапсуляцию компонентов и unidirectional data flow Особенно если переданный метод меняет состояние родителя Эмитьте ивенты, слушайте и дергайте метод" Ок, я с ней согласен

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта