【发布时间】:2021-09-21 11:51:16
【问题描述】:
我有一个包含多个组件的单页 vue.js 应用程序,现在我想在滚动浏览组件时动态更改 url 中的哈希值。例如,如果您尝试在 vue.js 文档中滚动:
从这里滚动时,您会发现 url 发生变化:
https://v3.vuejs.org/guide/introduction.html#what-is-vue-js
到这里:
https://v3.vuejs.org/guide/introduction.html#getting-started
等等。
我尝试在组件的第一个标签上设置@scroll="changeRoute",这会触发一个函数:
<script>
import { useRouter } from "vue-router";
export default {
setup() {
const router = useRouter();
const changeRoute = () => {
router.push({
name: "Home",
hash: "#landing-section",
});
console.log("route changes");
};
return {
changeRoute,
};
},
};
</script>
但这不起作用,甚至没有执行的功能?
【问题讨论】:
-
很有可能,您的组件没有触发滚动事件。您应该将滚动事件附加到可滚动的父级(可能是 html/body 元素)。此外,您可能需要考虑使用 IntersectionObserver,并检查当前哪个组件与视口相交:然后将散列更新为与该组件关联的标识符。
-
我去搜一下
-
“我该怎么做?”我在评论中所说的。
标签: vue.js vue-router