устанавливаем какй-то обработчик не важно onClick
мы же не удаляем потом их , видимо Реакт это всё под капотом делает
но если мы через ref это делаем, то мы должны их (обработчики) очищать, так?
ну, да (хз)
реф это всегда один и тот же объект межу рендерами. а обычный способ это document.querySelector?
Ну, да. Но я имел в виду, например, через ивент когда мы обращаемся к значению инпута e.target.value
через реф это значение из нативного дома, через onChange синтетическое. ты про такое?
Да да
Контроллируемые/неконтроллируемые инпуты
Не, совсем, понятно для меня
через onChage изменение состояния инпута контроллируется стейтом компонента, через реф это нативный дом (через реф не будет ререндера при печатании каждой буквы)
Теперь осенило. Спс)
вот спасибо, я подозревал что именно так, я ещё конечно ещё тот знаток , но хотелось бы увидеть пример не на уровне уроков, а какойто более лучше пример кода где без ref не обойтись ну никак я тоже его юзал и там уроки делал какието и ещё что-то писал но чёткого понимания когда юзать ref и через него обработчик навешивать елементу , вмеcто стандартного <btn onClick > у меня нету
Реф это обычный объект с полем current. Каким образом будешь вешать события через него?
то что хранит в себе current - эт овыход на этот самый елемент так же? const btnRef = useRef(); <btn ref={btnref}> вот он теперь в current хранит ссылку на btn
Не стоит смотреть на реф только как связь с элементом. Это отличный инструмент хранения данных изменение которых не должно вызывать ререндер
А дальше ? const handleClick = () => console.log('fff') btnRef?.current.onclick = handleClick
нет он типо на маунте вешаеться и очищаеться в useEffect const func = ()=> { something do}; useEffect(()=>{ btn.addEventListener("event", func); ()=>{ btn.removeEventListener('event', func) } }, [] )
а в чем преимущество данного подхода перед синтетическим onClick?
вот и я не пойму и хочу разобраться когда же без реф не обойтись? но видимо вторая фишка рефа более понятна и оправдана то что он в себя сохранять может , нежели работа с дом елементами
Всевозможные ситуации так вмиг не охватишь, надо отталкиваться от ситуации. Почитай статьи "useRef use cases"
ок, спасибо за дискуссию
Обсуждают сегодня