先上图
上面这张图是父组件里面写的函数,函数里面有滚动事件,下面再看报错,看图
可以看到我是从父组件里面进入到子组件里面的,然后子组件就报错了,执行到打印222就不执行了,说明没有获取到.fuchuang这个class类,肯定获取不到啊,我又没有在这个页面写这个class类。现在的问题就是为什么滚动事件会延续到子组件这里。
说明一个问题,子组件页面如果刷新之后,就不报错了,下面看图
可以看到我是滚动了的,页面刷新了,就不报错了,百思不得其解,不知道为什么会这样,求大佬告知,谢谢!
先上图
上面这张图是父组件里面写的函数,函数里面有滚动事件,下面再看报错,看图
可以看到我是从父组件里面进入到子组件里面的,然后子组件就报错了,执行到打印222就不执行了,说明没有获取到.fuchuang这个class类,肯定获取不到啊,我又没有在这个页面写这个class类。现在的问题就是为什么滚动事件会延续到子组件这里。
说明一个问题,子组件页面如果刷新之后,就不报错了,下面看图
可以看到我是滚动了的,页面刷新了,就不报错了,百思不得其解,不知道为什么会这样,求大佬告知,谢谢!
你的描述缺少更详细的内容。
1.你的父子组件的理解是错误的。
2.现在报错的原因是,你在所谓的“父组件”中对body绑定了onscroll事件,进入所谓的“子组件”后,body上的事件并没有移除,报错的原因是现在在事件中执行dom选择到的fc值位null,然后你代码里试图对null.style访问,所以报错。
3.解决方案:在所谓“父组件”的beforeDestroy声明周期中移除body的onscroll事件处理。
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
2 回答4.7k 阅读✓ 已解决
4 回答4.3k 阅读✓ 已解决
怀疑你这两个组件之间不是所谓的“父子”关系。因为你在“子”组件刷新页面后滚动,虽然没有报错,但也并没有打印出任何东西,说明滚动事件没挂载,进一步说明“父”组件的mounted生命周期没执行。
而你在从“父”组件进入到“子”组件时,滚动会报错,是因为在“父”组件卸载的时候你没有将滚动事件清除,导致进入新的页面,找不到fuchuang这个class类。所以应该组件卸载时清除滚动事件就好了。
我猜是这样。