目的:vue全局监听页面的改变,从而做出相对应的结果。
第一种:你的监听源包含了所有的你需要监听的组件
eg:你把监听事件写在了 App.vue 组件中,而你需要监听 1.vue 2.vue 3.vue 组件。你全部都在 App里面引用了。
为了方便,我直接把代码也复制过来
<script>
//引入导航栏子组件
import navigationBar from "./components/public/navigationBar.vue"
//引入底部子组建
import bottom from "./components/public/bottom.vue"
export default {
data() {
return {
screenWidth: document.body.clientWidth, // 页面的宽度
};
},
mounted(){
this.$refs.navigationBar.change1(this.screenWidth); //初始化导航栏的样式
},
created() {
const that = this
window.onresize = () => {
return (() => {
window.screenWidth = document.body.clientWidth
that.screenWidth = window.screenWidth
this.$refs.navigationBar.change1(this.screenWidth); //实时监听并改变导航栏的样式
})()
}
},
components:{ //注册组件
"navigation-Bar" : navigationBar, //导航栏子组件
"bottom-box" : bottom, //底部子组件
}
};
</script>
第二种:你很多地方都需要用这个监听事件。
很遗憾,这个 window.onresize 监听事件只能写一个。
我的解决思路是。 在vuex中存放一个数据。这个数据就是页面的实时宽度。然后再需要监听的地方去对这个数据进行监听。
缺陷:无法监听到,突然的变大,变小(你直接点击了右上角的最大化)
2-1,创建vuex (这个网上很多,自己去找)