为什么在父组件写的滚动事件,在子组件触发了,但是子组件刷新页面之后就不报错了,怎么阻止延续到子组件

先上图

图片描述

上面这张图是父组件里面写的函数,函数里面有滚动事件,下面再看报错,看图

图片描述

可以看到我是从父组件里面进入到子组件里面的,然后子组件就报错了,执行到打印222就不执行了,说明没有获取到.fuchuang这个class类,肯定获取不到啊,我又没有在这个页面写这个class类。现在的问题就是为什么滚动事件会延续到子组件这里。

说明一个问题,子组件页面如果刷新之后,就不报错了,下面看图

图片描述

可以看到我是滚动了的,页面刷新了,就不报错了,百思不得其解,不知道为什么会这样,求大佬告知,谢谢!

阅读 3k
3 个回答

怀疑你这两个组件之间不是所谓的“父子”关系。因为你在“子”组件刷新页面后滚动,虽然没有报错,但也并没有打印出任何东西,说明滚动事件没挂载,进一步说明“父”组件的mounted生命周期没执行。

而你在从“父”组件进入到“子”组件时,滚动会报错,是因为在“父”组件卸载的时候你没有将滚动事件清除,导致进入新的页面,找不到fuchuang这个class类。所以应该组件卸载时清除滚动事件就好了。

我猜是这样。

你的描述缺少更详细的内容。

1.你的父子组件的理解是错误的。

2.现在报错的原因是,你在所谓的“父组件”中对body绑定了onscroll事件,进入所谓的“子组件”后,body上的事件并没有移除,报错的原因是现在在事件中执行dom选择到的fc值位null,然后你代码里试图对null.style访问,所以报错。

3.解决方案:在所谓“父组件”的beforeDestroy声明周期中移除body的onscroll事件处理。

你的dispplay:none是干嘛用的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题