@cocojambo1

В каких ситуациях надо использовать хук useImperativeHandle?

Всем привет, пытаюсь понять нафига использовать useImperativeHandle (React hook), но примеры в инете - тупые (вот кнопочка, вот инпутек, по клику на кнопу - мы можем сделать автофокус на инпуте).

Но такие примеры - не помогают мне разложить по полочкам, в чем его смысл. Ведь то же самое можно сделать и без использования этого хука. Пытался искать реальные примеры - тоже какие-то ввакуме.

Мб у кого есть реальные примеры использования этого хука? Если да, то почему вы НЕ смогли обойтись без него?
  • Вопрос задан
  • 773 просмотра
Решения вопроса 1
Alexandroppolus
@Alexandroppolus
кодир
Это может понадобиться, если в твоем компоненте используется какая-нибудь хрень, которой удобно управлять не через изменение пропсов (стандартный react-way), а через вызовы функций. Ну вот тот же пресловутый инпут или текстареа - у него есть штуки, которые не отобразились на пропсы, например выделение текста.

Соответственно, чтобы вызывать функции, нужен экземпляр - что-то вроде viewModel для твоего компонента. И тут два пути: либо ты вручную создаешь этот объект, просовываешь через проп, и компонент к нему "подключается", либо компонент сам создает сей объект и возвращает тебе, уже с помощью рефа. Вот useImperativeHandle реализует второй способ. При размонтировании, реф обнуляется, компонент "заметает следы".

Пример из более-менее известного - библиотека Формик
https://github.com/jaredpalmer/formik/blob/main/pa...
formikbag - тот самый "объект с методами". Он создается через хук useFormik, но конкретно здесь компонент Formik сам это сделал и отдал тебе
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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