【发布时间】:2021-10-05 09:27:51
【问题描述】:
我正在使用 react js 开发一个项目,每当窗口大小发生变化时,我在元素中添加和删除类时遇到问题。我在一个页面中呈现了 3 个 div 元素,当屏幕小于或等于 768 时,只有一个 div 元素应该显示,其他两个元素只有在单击它们的按钮时才会显示。好吧,它工作正常,但是每次我更改浏览器的大小时,我都会在页面呈现之前收到此错误。 TypeError: Cannot read properties of null (reading 'classList') 我正在考虑使用 useState 或 useEffect 但我不知道如何在更改窗口大小时添加或删除类。 需要添加或删除的类包括显示无和显示块。有人可以帮帮我吗。我只需要知道如何在窗口大小更改时添加或删除类
window.addEventListener('resize', function(event){
if(window.innerWidth <= 768){
document.getElementById("details").classList.remove("toggle-details");
document.getElementById("convo").classList.remove("toggle-convo");
document.getElementById("chats").classList.remove("toggle-chats");
}
else{
document.getElementById("chats").classList.add("chats");
document.getElementById("chats").classList.remove("toggle-chats");
document.getElementById("details").classList.add("details");
document.getElementById("details").classList.remove("toggle-details");
document.getElementById("convo").classList.add("convo");
document.getElementById("convo").classList.remove("toggle-convo");
}
});
【问题讨论】:
-
你应该做一些调试——要么在你的IDE中,要么放一些console.log。如果你写 let details_element = document.getElementById("details") 然后 console.log(details_element) 你可能会看到元素为空。
标签: reactjs class null use-state