【发布时间】:2021-08-19 19:05:51
【问题描述】:
我正在使用
- Quasar Framework v2 测试版
- Vue 3 组合 API
- Vuex 4
- 打字稿
我的问题:
当我导入路由器并尝试使用 Router.push('/') 在 Vuex 商店模块 actions.ts 中重定向 User
它显示了一个错误 => Property 'push' does not exist on type 'RouteCallback<StateInterface>'
actions.ts
import { ActionTree } from 'vuex'
import { StateInterface } from '../index'
import { LoginResponseInterface } from './state'
import { api } from 'boot/axios'
import { Cookies } from 'quasar'
import Router from '../../router'
const actions: ActionTree<LoginResponseInterface, StateInterface> = {
UserLogin({commit}, formData){
api.post('auth/login', formData)
.then(response => {
var user = {firstName: response.data.firstName, lastName: response.data.lastName, phoneNumber: response.data.phoneNumber}
commit('setUserDetails', {token: response.data.token, user})
Cookies.set('auth_token', response.data.token)
Router.push('/') //`Property 'push' does not exist on type 'RouteCallback<StateInterface>'`
})
}
}
export default actions
router/index.ts
import { route } from 'quasar/wrappers'
import {
createMemoryHistory,
createRouter,
createWebHashHistory,
createWebHistory
} from 'vue-router'
import { StateInterface } from '../store'
import routes from './routes'
/*
* If not building with SSR mode, you can
* directly export the Router instantiation;
*
* The function below can be async too; either use
* async/await or return a Promise which resolves
* with the Router instance.
*/
export default route<StateInterface>(function ({ store, /* ssrContext */ } ) {
const createHistory =
process.env.SERVER
? createMemoryHistory
: process.env.VUE_ROUTER_MODE === 'history'
? createWebHistory
: createWebHashHistory
const Router = createRouter({
scrollBehavior: () => ({ left: 0, top: 0 }),
routes,
// Leave this as is and make changes in quasar.conf.js instead!
// quasar.conf.js -> build -> vueRouterMode
// quasar.conf.js -> build -> publicPath
history: createHistory(
process.env.MODE === 'ssr' ? void 0 : process.env.VUE_ROUTER_BASE
)
})
return Router
})
【问题讨论】:
-
Router在../../router中是如何定义的?错误非常简单,看起来Router对象不是您认为的类型。 -
@MattU,看看,我更新了问题
标签: typescript vue.js vuex quasar-framework