【发布时间】:2020-11-30 19:59:15
【问题描述】:
我想为一个元素创建一个 ref,将它保存在 state 中,然后在其他地方使用它。这是我目前所拥有的:
const Header = () => {
const topElement = useRef();
const { setRootElement } = useScrollToTop();
useEffect(() => {
setRootElement(topElement);
}, []);
return (
<div ref={topElement}>
...
</div>
)
}
useScrollToTop 钩子:
export const useScrollToTop = () => {
const [rootElement, setRootElement] = useState();
const scrollToTop = () => {
rootElement.current.scrollIntoView();
};
return {
scrollToTop: scrollToTop,
setRootElement: setRootElement
};
};
在不同的组件中:
const LongList = () => {
const { scrollToTop } = useScrollToTop();
return (
<div>
....
<button onClick={() => scrollToTop()} />
</div>
);
}
setRootElemet 工作正常,它保存了我传递给它的元素,但是当我调用 scrollToTop() 时,该元素未定义。我在这里错过了什么?
【问题讨论】:
标签: reactjs react-hooks ref