Очень простой вопрос, мне нужно использовать useImperativeHandle
, чтобы предоставить родителям внутренний дочерний метод. Но я также хочу получить доступ, например, к ref.current.style, в настоящее время он не определен при использовании useImperativeHandle
. Есть идеи, как передать его с помощью внутренних методов?
useImperativeHandle(ref, () => ({
someMethod: () => {
...
},
...ref
}));
Вышеупомянутое будет работать, но правильно ли это? (также нам нужно было бы сделать ref.current.current, что не очень хорошо)
Простой пример:
function FancyInput(props, ref) {
const inputRef = useRef();
useImperativeHandle(ref, () => ({
focus: () => {
inputRef.current.focus();
}
}));
return <input ref={inputRef} ... />;
}
FancyInput = forwardRef(FancyInput);
function FancyParent() {
const childRef = useRef()
useEffect(()=>{
childRef.current.style.opacity = 0;
// oups current.style has been ovveriden and is now
//undefined
})
return <FancyInput ref={childRef}/>
}