[英]What's the best way to access the DOM ref immediately after the element is being toggled on?
考慮這個組件:
function Component() {
const [show, setShow] = useState(false);
const ref = useRef(null);
return (
<div>
<button
onClick={() => {
setShow(true);
console.log(ref.current); // -> null
setTimeout(() => {
console.log(ref.current); // -> <div>123</div>
}, 0);
}}
>
show
</button>
{show && <div ref={ref}>oh hi!</div>}
</div>
);
}
參考 object 將為空,因為 object 只會在下一次重新渲染時插入。 有沒有比setTimeout
更好的方法來訪問 dom ref?
使用在每次更新后運行的useEffect()
鈎子(以及組件安裝時)。
在此處閱讀有關它的更多信息
useEffect 有什么作用? 通過使用這個 Hook,你告訴 React 你的組件需要在渲染之后做一些事情。 React 會記住你傳遞的 function(我們將其稱為我們的“效果”),並在執行 DOM 更新后調用它。
每次渲染后都會運行 useEffect 嗎? 是的,默認情況下。 它在第一次渲染后和每次更新后運行。
export default function Component() { const [show, setShow] = useState(false); const ref = useRef(null); useEffect(() => { console.log(ref.current); }, [show]); return ( <div> <button onClick={() => { setShow(true); }} > show </button> {show && <div ref={ref}>oh hi;</div>} </div> ); }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.