我正在尝试使用以下代码获取滚动位置:
useEffect (()=>{
document.addEventListener("scroll", e => {
let scrolled = document.scrollingElement.scrollTop;
if (scrolled >= 5){
setPos("moved")
} else {
setPos("top")
}
})
},[])
Typescript 抱怨 document.scrollingElement.scrollTop 说它可能为空。如何避免此错误并保持打字稿愉快?
答案 0 :(得分:2)
至少有两种方法。
document.addEventListener("scroll", e => {
if (!document.scrollingElement) {
return;
}
let scrolled = document.scrollingElement.scrollTop;
...
});
document.addEventListener("scroll", e => {
let scrolled = document.scrollingElement!.scrollTop;
...
});
答案 1 :(得分:0)
只需做一个null
检查
useEffect(() => {
document.addEventListener("scroll", e => {
if (document.scrollingElement !== null) {
const scrolled = document.scrollingElement.scrollTop;
if (scrolled >= 5) {
setPos("moved")
} else {
setPos("top")
}
}
})
}, [])
答案 2 :(得分:0)
我发现 null
检查保护子句是最好的方法。
useEffect (()=>{
document.addEventListener("scroll", e => {
let scrolled = document.scrollingElement.scrollTop;
if (scrolled === null) {
return;
}
if (scrolled >= 5){
setPos("moved")
} else {
setPos("top")
}
})
},[])