1、子store中如何使用router
以user.ts 这个store为例
错误写法
js
// 说明:不能使用插件实例化router,否则获取不到router的函数
// 错误写法如下:
import { useRouter } from "vue-router"
actions:{
login(){
const router = useRouter()
// 不信你在这里打印router,最终得到的值是undefined
console.log(router) // undefined
router.push('/') // router都取不到更别说跳转了
}
}
正确写法
js
import router from "@/router"; // 引入自己封装的路由
actions:{
login(){
console.log(router) // 可以获取到router的实例对象
router.push('/') // 可以跳转
}
}
2、router.ts中如何使用store
必须在函数体中实例,否则会报未能找到pinia,让你安装pinia的警告
错误写法
js
import { useUserStore } from "@/store";
const useUser = useUserStore();
router.beforeEach((to, from, next) => {
console.log(useUser.loginForm) // 这里是取不到store的
});
正确写法
js
import { useUserStore } from "@/store";
router.beforeEach((to, from, next) => {
const useUser = useUserStore();
console.log(useUser.loginForm) // 这样就可以取出store的值了
});