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

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

  • vue中,假如子组件在created发送了一个异步请求,父组件在mouted内发送一个异步请求,如何保证父组件在异步请求后能够拿到子组件异步数据。也就是说我希望在子组件和父组件异步都结束后拿到两者的值做一些操作,请问这个有什么比较好的办法嘛。

  • jQuery Mobile页面是否有类似生命周期的东西?比如在初始化、显示、隐藏/返回或其他事件上触发的事件?! 提前感谢!