我基本上试图在我的网站上拥有与这里完全相同的路由行为:https : //router.vuejs.org/guide/#html。请注意,当您向下滚动时,链接会更改为https://router.vuejs.org/guide/#javascript。向上滚动,反之亦然。重新加载页面时,您的位置将被保存。
我向我的路由器添加了以下滚动行为:
scrollBehavior(to, from, savedPosition) {
if (to.hash) {
return { selector: to.hash }
} else if (savedPosition) {
return savedPosition;
} else {
return { x: 0, y: 0 }
}
Run Code Online (Sandbox Code Playgroud)
现在我可以跳到一个带有链接的锚点,并且路线会发生变化。这就是我所了解的。以 Vue Router 网站为例有点讽刺,但无论如何 - 我怎样才能复制它的行为?
最近我开始使用 Pinia 作为我的 Vue 3 项目的全局商店。我使用 Firebase 进行用户身份验证,并尝试在 Vue 初始化之前加载当前用户。理想情况下,所有与身份验证相关的内容都应该位于 Pinia 商店的单个文件中。不幸的是(与 Vuex 不同),在我可以使用任何操作之前,需要将 Pinia 实例传递给 Vue 实例,我相信这就是问题所在。首次加载时,user存储中的对象会短暂空置。
这是绑定用户的存储操作(使用新的 Firebase Web v9 Beta)auth.js
import { defineStore } from "pinia";
import { firebaseApp } from "@/services/firebase";
import {
getAuth,
onAuthStateChanged,
getIdTokenResult,
} from "firebase/auth";
const auth = getAuth(firebaseApp);
export const useAuth = defineStore({
id: "auth",
state() {
return {
user: {},
token: {},
};
},
actions: {
bindUser() {
return new Promise((resolve, reject) => {
onAuthStateChanged( …Run Code Online (Sandbox Code Playgroud)