我在练手风琴。当我第一次访问网站或刷新时。我的手风琴根本没用。但是在开发过程中,当我对useEffect做任何更改时,就会重新呈现它。它开始正常工作了。例如,在开发过程中,如果我在localhost上打开站点,如果我在useEffect中添加了注释,那么它就开始工作了。
useEffect(() => {
const accordins = document.querySelectorAll('.accordings .item');
console.log("asdf");
for (let i=0;i<accordins.length;i++) {
accordins[i].addEventListener('click',function(){
let allactive = document.querySelectorAll('.accordings .item.active');
for(let j=0;j<allactive.length;j++){
if(allactive[j] !== accordins[i]) {
allactive[j].classList.remove('active');
}
}
this.classList.toggle("active");
})
}
}, [])
发布于 2022-05-18 06:06:39
请阅读效果钩子的文档:https://reactjs.org/docs/hooks-effect.html,钩子(带有[]条件)只像componentDidMount
一样执行,这与组件确实呈现不一样。这意味着,您正在搜索的实体很可能尚未呈现。
我建议看一看useLayoutEffect (https://reactjs.org/docs/hooks-reference.html#uselayouteffect),它是在所有DOM突变之后触发的。
https://stackoverflow.com/questions/72285899
复制相似问题