Я изучаю перехватчики React (и я довольно новичок в React) и обдумывал варианты использования для useImperativeHandle. Я придумал довольно полезный сценарий.
Я знаю, что это можно сделать без использованияImperativeHandle, но я думаю, что здесь есть некоторые преимущества.
Чего я не знаю ...
- Я «обнаружил очевидное», и это не очень полезно? ... или
- Это плохая форма или анти-паттерн?
Мой код работает, но я ищу информацию о лучших практиках. Кроме того, поскольку сейчас существует недостаток информации об useImperativeHandle, этот пример, выходящий за пределы ссылки на ввод, может быть полезен другим.
У меня есть минимальный пример, размещенный на Github, если вы хотите поиграть с ним:
https://github.com/ericsolberg/react-uih-hook
Использование разметки, аналогичной:
const App = props => {
return (
<Foo>
<Bar>This is Bar 0</Bar>
<Bar>This is Bar 1</Bar>
<Bar>This is Bar 2</Bar>
</Foo>
);
};
То, чего я достиг, это:
- Разрешить родительскому компоненту 'Foo' предоставлять хранилище состояний для своих дочерних элементов, поэтому Foo может монтировать / отключать дочерние элементы, но при этом разрешать им восстанавливать состояние.
- 'Bar' использует useImperativeHandle для обеспечения 'вызова', чтобы Bar мог наложить вето на демонтаж в случае, если он делает что-то важное.
Как я уже заметил, это работает отлично. В React данные и реквизиты текут по дереву, а обратные вызовы - вверх. Это дает вам возможность для определенных сценариев вызывать дерево. Желательно ли это?