目标: 了解hash改变, 如何显示不同的组件的过程
用户点击了页面上的a链接
导致了 URL 地址栏中的 Hash 值发生了变化
前端js监听了到 Hash 地址的变化
前端js把当前 Hash 地址对应的组件渲染都浏览器中
? ? ? MyHome.vue
? ? ? MyMovie.vue
? ? ? MyAbout.vue
<script>
import MyHome from '@/views/MyHome.vue'
import MyMovie from '@/views/MyMovie.vue'
import MyAbout from '@/views/MyAbout.vue'
export default {
components: {
MyHome,
MyMovie,
MyAbout,
}
}
</script>
<template>
<div>
<h1>App组件</h1>
<component :is="comName"></component>
</div>
</template>
<script>
export default {
// ...省略其他
data () {
return {
comName: 'MyHome'
}
}
}
</script>
<template>
<div>
<h1>App组件</h1>
<a href="#/home">首页</a>
<a href="#/movie">电影</a>
<a href="#/about">关于</a>
<component :is="comName"></component>
</div>
</template>
created () {
window.onhashchange = () => {
switch(location.hash) {
case '#/home':
this.comName = 'MyHome'
break
case '#/movie':
this.comName = 'MyMovie'
break
case '#/about':
this.comName = 'MyAbout'
break
}
}
},
总结: 改变浏览器url的hash值, JS监听到hash值改变, 把对应的组件显示到同一个挂载点