前言
vue3和vue2的路由和vuex的使用方式基本一致,只是初始化的方式改变了一下。
Router
初始化
router/index.ts的配置:
import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router' // 如果是hash模式就把createWebHistory改为createWebHashHistory
import Home from '../views/Home.vue'
const routes: Array<RouteRecordRaw> = [
{
path: '/',
name: 'Home',
component: Home
},
{
path: '/about',
name: 'About',
component: () => import(/* webpackChunkName: "about" */ '../views/About.vue')
}
]
const router = createRouter({
history: createWebHistory(process.env.BASE_URL),
routes
})
export default router
main.ts中:
import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
createApp(App).use(store).use(router).mount('#app')
使用配置
可以看看vue2的回顾系列有关router的文章。
补充
vue3获取$router
和$route
的方式:
import { useRouter, useRoute } from 'vue-router'
setup(){
const router = useRouter()
const route = useRoute()
}
Vuex
初始化
store/index.ts中(下面写法目前有个问题state接口没生效):
import { createStore, Store } from 'vuex'
// 全局模块声明
declare module "@vue/runtime-core" {
// 定义接口
interface State {
num: number
}
// 让this.$store可访问
interface ComponentCustomProperties {
$store: Store<State>
}
}
export default createStore({
state() {
return {
num: 1
}
},
getters: {
getNum(state: any) {
return state.num
}
},
mutations: {
addNum(state: any, inputNum: number) {
return state.num + inputNum
}
},
actions: {
},
modules: {
}
})
main.ts:
import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
createApp(App).use(store).use(router).mount('#app')
使用方式
和vue2基本一致,可以看这篇文章:【vue回顾系列】13-vuex的简单理解与使用
补充
vue3中获取store的方式:
import { useStore } from 'vuex'
setup(){
const store = useStore()
console.log(store.state.xxx)
}