gpt4 book ai didi

javascript - 如何修复无法读取 null 的属性 'clientWidth'?

转载 作者:行者123 更新时间:2023-11-30 19:03:27 26 4
gpt4 key购买 nike

调整窗口大小时出现错误“无法读取 null 的属性‘clientWidth’”。我想,这是因为,我得到 ref null。知道我该如何解决它吗?

import React, { useRef, useState, useEffect } from "react";

const data = [
"Some short text",
"Some text that is a little bit longer",
"Some text that will need to wrap but still fits on two lines",
"A massive range of hammer drill machines and rotary hammers for SDS-plus accessory tools."
];
const TooltipDiv = props => {
const divRef = useRef(null);
const [allowTooltip, setAllowTooltip] = useState(false);
useEffect(() => {
if (!tooltip && divRef.current.scrollWidth > divRef.current.clientWidth) {
setTooltip(true);
} else if (window.addEventListener) {
window.addEventListener('resize', () => {
if (!tooltip && divRef.current.scrollWidth > divRef.current.clientWidth) {
setTooltip(true);
}
})
}
}, [tooltip, divRef]);
if (allowTooltip) {
return (
<Tooltip title={props.text}>
<div ref={divRef} className={props.className}>
{props.text}
</div>
</Tooltip>
);
}
return (
<div ref={divRef} className={props.className}>
{props.text}
</div>
);
};
function App(props) {
return (
<>
{data.map(text => {
return (
<>
<TooltipDiv text={text} className={props.classes.listItem} />
</>
);
})}
</>
);
}

调整窗口大小时出现错误“无法读取 null 的属性‘clientWidth’”。我想,这是因为,我得到 ref null。知道我该如何解决它吗?

最佳答案

window.addEventListener 正在尝试读取一个尚不存在的值。此时,divRef 为空。

我认为你应该尝试测试 div.current 的存在,然后执行你的 if 语句:

if(tooltip && divRef.current && divRef.current.scrollWidth && divRef.current.clientWidth){
//your statement
}

另外,尝试在没有 [divRef, tooltip] 的情况下执行操作,因为我想你希望它只执行一次 ([] )

关于javascript - 如何修复无法读取 null 的属性 'clientWidth'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59246219/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com