react 中页面渲染完成的生命周期
react 提供了几个生命周期函数来管理组件生命周期中的不同阶段。当页面渲染完成时,调用的生命周期函数是 componentdidmount。
遇到的问题
在问题中,当组件挂载时使用 useeffect 并在其中尝试查询 dom 元素时,出现错误,提示无法找到指定的 id。这是因为 useeffect 在组件挂载之前执行,此时页面还没有渲染完成,因此 dom 中还没有该元素。
解决方案
为了避免在 dom 未渲染完之前查询 dom 元素,可以将查询代码放在 componentdidmount 生命周期函数中。componentdidmount 会在页面渲染完成且 dom 已准备就绪后执行。
修改后的代码
import React, { useState, useEffect } from 'react'; export default function SubContainer({ data, ...props }) { const [data, setData] = useState(data); useEffect(() => { // 滚动逻辑 }, [props.scrollToIdx]); componentDidMount() { // 查询 DOM 元素的逻辑 } return ( // ... ); }
网友留言2