问答

document.getElementById返回null

作者:admin 2021-04-21 我要评论

import React, { useState } from "react";import Child from "./component/Child";const Demo: React.FC = () = { //获取当前页面的宽高 var container: any = ...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)
import React, { useState } from "react";
import Child from "./component/Child";

const Demo: React.FC = () => {

    //获取当前页面的宽高
    var container: any = document.getElementById('table')
    var maxWidth = container?.clientWidth
    var maxHeight = container?.clientHeight

    console.log(container);
    console.log('maxWidth:', maxWidth);   
    console.log('maxHeight:', maxHeight);  

    const renderPage = () => {
        if (...) {
            return (
                <>
                    ...
                </>
            )
        }
        return (
            <>
                ...
            </>
        )
    }

    return (
        <div id='table'>
                {renderTable()}

                <Child/>
        </div>
    )
}
export default Demo

如上述代码所示,使用react函数组件写的一个页面,想使用document.getElementById获取该页面的宽高,但是打印container返回null,maxWidth和maxHeight返回undefined

请问为什么会获取不到呢,应该如何修改呢?

###

应该是因为获取的时候,dom还没建出来。React组件有生命周期, 改成这样试试:

const Demo: React.FC = () => {

useEffect(() => {
    const container: any = document.getElementById('table')
    console.log(container);
  },
  []
);

 return ( <div id='table'></div>)

}
###

应该在组件渲染完成之后的生命周期函数内获取dom

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • document.getElementById返回null

    document.getElementById返回null

  • (文字转语音)如何能够实现语音播报完

    (文字转语音)如何能够实现语音播报完

  • vue-cli electron 怎样获得绝对路径?

    vue-cli electron 怎样获得绝对路径?

  • 为什么我的slot标签外面包上一层div,

    为什么我的slot标签外面包上一层div,

腾讯云代理商
海外云服务器