Nikolai
Что так меньше возможности ошибиться.
Мемоизация не про ошибки вообще. Мы явно сейчас в разных плоскостях что то обсуждаем
Danila
Так я и думал. Как написал выше ты не знаешь в чем разница между методом инстанса и методом прототипа. Ты в каждом инстансе создаёшь копию метода this.onClick = this.onClick.bind(this).
Я знаю в чём разница между методами инстанса и методами прототипа. Бинд делается не из-за этого и не для этого, а из-за того, что контекст функции определятеся тем, как она вызвана. Это к спеке ЖС вопрос, а не к реакту
Александр
В любом случае не понимаю зачем обсуждать сейчас проблемы legacy подхода c классами, они в прошлом уже.
Danila
.bind возвращает новую функцию. Хочешь - клади её в прототипа, просто всем лень писать лишний .prototype и кладут в инстанс
Виталий
Я знаю в чём разница между методами инстанса и методами прототипа. Бинд делается не из-за этого и не для этого, а из-за того, что контекст функции определятеся тем, как она вызвана. Это к спеке ЖС вопрос, а не к реакту
Воообщето я вкурсе про это. И мой вопрос именно о том как избежать этого тупого подхода. В Ангуляре например не надо ничего биндить, и можно просто передать метод.
Андрей
Мемоизация не про ошибки вообще. Мы явно сейчас в разных плоскостях что то обсуждаем
Единообразие кода - это про ошибки. Если ты будешь всё мемоизировать, то тебе не надо забивать голову "а остались ли в замыкании неактуальные ссылки или нет?", ты явно знаешь, что если и остаются, то функция пересоздатся.
Danila
Воообщето я вкурсе про это. И мой вопрос именно о том как избежать этого тупого подхода. В Ангуляре например не надо ничего биндить, и можно просто передать метод.
Потому что ангуляр - это магия, а не ЖС. А реакт - это жс, а не магия. Избежать - я написал 4 варианта. А ещё лучше - юзать функциональные компоненты
Виталий
В любом случае не понимаю зачем обсуждать сейчас проблемы legacy подхода c классами, они в прошлом уже.
Ну окей. Покажи НА ХУКАХ как ты передаёшь в кнопку в onClick функцию без создания её копии в каждом компоненте на каждом рендере. https://stackblitz.com/edit/react-from-scratch-hooks-counter-example
Andrey
Если это не сказывается на производительности, то зачем писать неконсистентный код?
я если что к треду "ОМГ на каждый инстанс объекта будет своя ссылка на хендлер" ваш не читал, соре, пока не вразумил, в чем корелляция консистентности кода и микрооптимизаций)
Андрей
Радикально. Ты сам то это применяешь в реальных проектах?
У меня все функции в рендере обёрнуты в useCallback.
Александр
Ну окей. Покажи НА ХУКАХ как ты передаёшь в кнопку в onClick функцию без создания её копии в каждом компоненте на каждом рендере. https://stackblitz.com/edit/react-from-scratch-hooks-counter-example
useCallback, функция которую передаешь в useCallback разумеется будет пересоздаваться при кажом вызове, но useCallback будет возвращать ссылку всегда на одну и туже (пока не изменятся deps)
Danila
Ну попробуй положить в прототип забинженый метод))) Забавно.
this.constructor.prototype.onClick = this.constructor.prototype.onClick.bind( this );
Андрей
ну перебор же 🙂
Почему? Я снимаю с себя мыслительную нагрузку по поводу того нужную я функцию передаю или нет.
Виталий
this.constructor.prototype.onClick = this.constructor.prototype.onClick.bind( this );
Садить двойка! И домашнее задание проверить этот подход.
Nikolai
У меня все функции в рендере обёрнуты в useCallback.
У тебя или в реальных проектах? Твой код проходит ревью у коллег с такими параноидальными наклонностями?
Андрей
потому что разницы не заметишь в производительности
Мне насрать на производительность. Я не хочу вообще задаваться вопросом о том что я передаю в компоненты. С useCallback я всегда буду передавать то что нужно и производительность будет оптимальнейшей.
Виталий
А собственно вы какую-то проблему решаете или это вопрос принципа?
Для меня это просто вопрос на понимание и потенциальную оптимизацию.
Коля
Насрать на производительнось это сильно
Александр
Для меня это просто вопрос на понимание и потенциальную оптимизацию.
Будет ли выгода от этой оптимизации? Зачем заниматься этим?
Андрей
Насрать на производительнось это сильно
Да, потому что при правильных подходах она всегда будет около лучшей.
Виталий
Будет ли выгода от этой оптимизации? Зачем заниматься этим?
Для чего придумали прототипы в js? Будет ли выгода от прототипов?
Александр
Надо сделать дивизом этого чата.
Это точно, преждевременная оптимизация (без замеров профайлером разумеется) это конек чата
Андрей
Будет ли выгода от этой оптимизации? Зачем заниматься этим?
Я не нагружаю свой мозг и мозг других людей в команде.
Andrey
Для чего придумали прототипы в js? Будет ли выгода от прототипов?
в жс вообще много чего придумали, но это не повод втыкать это с поводом и без
Коля
Да, потому что при правильных подходах она всегда будет около лучшей.
я тоже юзаю useCallback часто, но нужно всегда понимать что и зачем ты делаешь.
Виталий
<button onClick={() => setOpen(true)} /> так же насрать и не задаешься вопросом
Так ты создаёшь новую функцию на каждом рендере. Это ещё хуже.
Андрей
я тоже юзаю useCallback часто, но нужно всегда понимать что и зачем ты делаешь.
Да, чтобы реакт следил за актуальностью ссылок, а не я. Я снимаю с себя ответственность этим подходом.
Александр
Для чего придумали прототипы в js? Будет ли выгода от прототипов?
Я не знаю зачем придумали прототипы, не хочу знать даже и заморачиваться такими микрооптимизациями. Когда у меня проблемы с производительностью. то я беру профайлер и решаю проблемы, до этого я не хочу заморачиваться.
Андрей
<button onClick={() => setOpen(true)} /> так же насрать и не задаешься вопросом
Читай тред, а не врывайся и вырывай цитаты из контекста.
Andrey
Я не знаю зачем придумали прототипы, не хочу знать даже и заморачиваться такими микрооптимизациями. Когда у меня проблемы с производительностью. то я беру профайлер и решаю проблемы, до этого я не хочу заморачиваться.
тут просто суть в том, что если у вас сложилась ситуация, когда для оптимизации кода необходимо исхитряться прототипами и всем таким, и вы пишете на реакте, то вы явно делаете что то не так
Andrey
Я более чем уверен что такой ситуации не было ни у кого, bottleneck производительности всегда был бы где-то выше
да это понятно, это просто, дабы обратить внимание, что люди не теми вопросами задаются (если только не из академического интереса)
Александр
да это понятно, это просто, дабы обратить внимание, что люди не теми вопросами задаются (если только не из академического интереса)
Академический интерес подразумевает замеры профайлером, тут же только на словах ищут мнимый прирост производительности
Алексей
Товарищи подскажите пожалуйста. Я с реактом не работал никогда и вообще js незнаю. Но мне очень нужно организовать работу с Реакт на моем вин10. Где искать инфу.
Andrey
Алексей
Оо а работать с ним будет кто то другой?
Мне просто нужно помоч горе ученице с ... я буду. Как на винду то его того этого. Ну а на ЮТЮБЕ уроки с макинтош
Алексей
Надо ставить линукс
Спасибо! Какой?
アレクサンダー・バキマトフ
Мне просто нужно помоч горе ученице с ... я буду. Как на винду то его того этого. Ну а на ЮТЮБЕ уроки с макинтош
та загуглите что нибудь из разряда "фронтенд разработка на win 10", там будет куча статей как подсистему линукса включить, установить ноду и пакеты)
Алексей
Не проблема спасибо пацаны!
Danila
Садить двойка! И домашнее задание проверить этот подход.
Согласен, хуйню написал. Но это опять же из другой плоскости вопрос. Это вопрос контекста при вызове метода. То, что нельзя привязать метод прототипа к инстансу с этим прототипом намертво - это вопрос к спеке, не? Ангуляр под капотом делает то же самое, что в реакте приходится делать руками, других вариантов вроде как и нет.
アレクサンダー・バキマトフ
хотя такое себе удовольствие на винде
Evgeny
Без подсистемы линукса никак?)
да можно, больно, но можно.
Андрей
да можно, больно, но можно.
А в каких местах больно?
アレクサンダー・バキマトフ
Без подсистемы линукса никак?)
я хз как по другому с нормальным башем там жить)) что знаю то и говорю)
Алексей
СПАСИБО!
🦜
для установки браузера, ноды, yarn, ide теперь нужны видеоуроки?
アレクサンダー・バキマトフ
Нормально разрабатываю без баша в винде
ну если тебе удобно то вопросов нет конечно
Evgeny
А в каких местах больно?
несколько лет не работал под виндой. Были какие-то проблемы на 7-ке с установкой самой ноды, почему-то нода не прописывалась в пути. Ну и были npm пакеты, которые под виндой тупо не билдились. Сейчас это уже скорее всего не актуально.
Sergey
на 10ке все работает, и без wsl
Max
подскажите, пожалуйста, где можно задать вопрос по jest enzyme?
Ruslan
Всем привет,у меня вопрос по селекту реакта,я передаю значение в options на 2х языках при этом в инпут ввожу на одном, и ощущение что если эти 2 значения не совпадают,то опции не отображаются,вопрос так ли это,должны ли эти значения соответствовать друг другу,или мне копаться в своём коде
LU
Привет! Ребят, А куда можно прилепить вакансию Sr JS Developer ? 🤷🏻‍♀️🤗
Maxim
в функциональных компонентах надо объявлять функции вне компонента и уже в них передавать пропы? ведь если объявлять их внутри компонента, то при каждом рендере они объявляются заново, влияет ли это на производительность?