vue spa项目中 window.location.hash 异常
为什么window.location.hash = this.$route.hash不起作用呢
mounted() {
this.$route.hash && (window.location.hash = this.$route.hash)
// setTimeout(() => {
// console.log(this.$route.hash)
// this.$route.hash && (window.location.hash = this.$route.hash)
// }, 2000)
},
watch: {
'$route.hash'() {
setTimeout(() => {
console.log(this.$route.hash)
this.$route.hash && (window.location.hash = this.$route.hash)
}, 5000)
// this.$route.hash && (window.location.hash = this.$route.hash)
}
},
下面两种情况都是会起作用的
1.hash写死
watch: {
'$route.hash'() {
setTimeout(() => {
console.log(this.$route.hash)
this.$route.hash && (window.location.hash = this.$route.hash)
}, 5000)
// this.$route.hash && (window.location.hash = '#test')
}
},
2.写在事件中
<template>
<a @click="pushState(url)"></a>
</template>
methods: {
pushState(url) {
window.location.hash = `#${url.split('#')[1]}`
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
你watch了hash,然后又改变hash,不会进入死循环吗
异步里面有this?
你先把
this.$route.hash
这个打印出来,应该是这个没值我通过另一种方式实现了锚点的跳转
参考vue2.0中怎么做锚点定位