当前位置: 首页 > 知识库问答 >
问题:

javascript - 请问,react中页面渲染完成的是哪个生命周期呢?

龙永思
2024-08-05

请问,react中渲染完成的是哪个生命周期呢?
我认为是:componentDidMount

  useEffect(() => {
    console.log('mounted') // 挂载后
  }, [])

可以当我在这个生命周期内,document.querySelector查询id的时候:却报错

    useEffect(() => {
        if(props.scrollToIdx) {

            const scrollToIdx = props.scrollToIdx 
            
            console.log("滚动ID:", '#item-' + scrollToIdx!.toString())

            const container = document.querySelector("#container")
            const div: HTMLDivElement | null = document.querySelector('#item-' + scrollToIdx!.toString()) // 这里查询出是null
        
            console.log(container, div)
            if(container) {
                container.scrollTo({
                    top: div!.offsetTop,
                    behavior: 'smooth'
                });
            }
        }

    }, [])

报错信息:

Cannot read properties of null (reading 'offsetTop')
TypeError: Cannot read properties of null (reading 'offsetTop')
    at 

也就是说,没有查询出#item-20,原因是还没有渲染到DOM。

请问这个应该如何进行避免呢?

共有1个答案

桂高义
2024-08-05

是不是#item-20异步从接口中获取的,如果是非同步获取的话,在页面首次完成渲染的时候useEffect(,[]),获取不到#item-20是符合预期的

 类似资料:
  • 我有一个问题,我认为它与屏幕渲染及其生命周期有关。基本上我有两个屏幕(菜单和游戏)。在GameScreen渲染方法中,我称之为World。更新,然后我的渲染。在(GameScreen的)隐藏方法中,我从Redner类中处理SpriteBatch。 因此,当我将屏幕从游戏更改为菜单(intheworld.update)时,Java崩溃。据我所知,飞机失事了。所以我的问题是,当我在渲染周期中间设置一个

  • 老司机一眼就可以看出,这个是在微信官方文档|页面生命周期基础上修改的。 对!我们就是在小程序框架之上执行 Vue 的 runtime,管理项目的 dom,在合适的生命周期中执行 vue 的 hooks。

  • WeX5页面运行时,分成两个阶段:编译阶段和运行阶段。 编译阶段 图2-19 页面编译阶段 如上图所示,WeX5页面编译时,根据页面的三个核心文件(.w文件、.js文件和.css文件),编译生成三个目标文件: ● main_{lang}_{skin}.html:完整的HTML页面,可以作用独立的HTML页面运行; ● xx.w.view_{lang}_{skin}.html:HTML页面片段,不能

  • 1、创建 DokuWiki中,最简单的创建页面方法是,通过已存在的页面创建一个新页面。在地址栏输入新名称然后点击创建。 首先,在页面输入 图片已损坏   然后点击创建 图片已损坏   这种最简单的方法可以保证新建页面与其他页面互相关联。 如果采用其他方法,请保证新页面可以链接到其他页面。不然新建页面就会成为单独页面,在以后查询的时候非常麻烦。 2、编辑 点击编辑页面就开始编辑,可以点击预览查看目前

  • 本文向大家介绍说说react的生命周期有哪些?相关面试题,主要包含被问及说说react的生命周期有哪些?时的应答技巧和注意事项,需要的朋友参考一下 装载阶段 组件第一次被渲染时的阶段,这一阶段相关的生命周期函数有: constructor componentWillMount render componentDidMount 更新阶段 如果组件中的 state 或者 props 发生了改变,Rea

  • 本文向大家介绍Activity生命周期(这个是必问的)相关面试题,主要包含被问及Activity生命周期(这个是必问的)时的应答技巧和注意事项,需要的朋友参考一下 onCreate() 创建活动,做一些数据初始化操作 onStart() 由不可见变为可见 onResume() 可以与用户进行交互,位于栈顶 onPause() 暂停,启动或恢复另一个活动时调用 onStop() 停止,变为不可见 o