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

А у меня кстате вопрос назрел когда мы в атрибутах

устанавливаем какй-то обработчик не важно onClick
мы же не удаляем потом их , видимо Реакт это всё под капотом делает

но если мы через ref это делаем, то мы должны их (обработчики) очищать, так?

19 ответов

17 просмотров

ну, да (хз)

реф это всегда один и тот же объект межу рендерами. а обычный способ это document.querySelector?

Ну, да. Но я имел в виду, например, через ивент когда мы обращаемся к значению инпута e.target.value

через реф это значение из нативного дома, через onChange синтетическое. ты про такое?

Да да

Контроллируемые/неконтроллируемые инпуты

Не, совсем, понятно для меня

через onChage изменение состояния инпута контроллируется стейтом компонента, через реф это нативный дом (через реф не будет ререндера при печатании каждой буквы)

Теперь осенило. Спс)

Drew-Naumenko Автор вопроса

вот спасибо, я подозревал что именно так, я ещё конечно ещё тот знаток , но хотелось бы увидеть пример не на уровне уроков, а какойто более лучше пример кода где без ref не обойтись ну никак я тоже его юзал и там уроки делал какието и ещё что-то писал но чёткого понимания когда юзать ref и через него обработчик навешивать елементу , вмеcто стандартного <btn onClick > у меня нету

Реф это обычный объект с полем current. Каким образом будешь вешать события через него?

Drew-Naumenko Автор вопроса

то что хранит в себе current - эт овыход на этот самый елемент так же? const btnRef = useRef(); <btn ref={btnref}> вот он теперь в current хранит ссылку на btn

Не стоит смотреть на реф только как связь с элементом. Это отличный инструмент хранения данных изменение которых не должно вызывать ререндер

А дальше ? const handleClick = () => console.log('fff') btnRef?.current.onclick = handleClick

Drew-Naumenko Автор вопроса

нет он типо на маунте вешаеться и очищаеться в useEffect const func = ()=> { something do}; useEffect(()=>{ btn.addEventListener("event", func); ()=>{ btn.removeEventListener('event', func) } }, [] )

а в чем преимущество данного подхода перед синтетическим onClick?

Drew-Naumenko Автор вопроса

вот и я не пойму и хочу разобраться когда же без реф не обойтись? но видимо вторая фишка рефа более понятна и оправдана то что он в себя сохранять может , нежели работа с дом елементами

Всевозможные ситуации так вмиг не охватишь, надо отталкиваться от ситуации. Почитай статьи "useRef use cases"

Drew-Naumenko Автор вопроса

ок, спасибо за дискуссию

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
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
Карта сайта