vue3.0 vueX 替代方案pinia的简单使用

vue3.0 vueX 替代方案Pinia的简单使用

  1. 安装Pinia

    yarn add pinia

  2. 创建store文件夹(store下建立index.ts

/*
 * @Author: boyyang
 * @Date: 2022-01-04 10:38:08
 * @LastEditTime: 2022-01-04 10:45:08
 * @LastEditors: boyyang
 * @Description: pinia
 * @FilePath: \boyyang\src\store\index.ts
 */

import type { App } from 'vue'
import { createPinia } from 'pinia'

const store = createPinia()

const setupStore = (app: App<Element>) => {
    app.use(store)
}

export {
    setupStore,
    store
}
  1. main.ts文件中使用
/*
 * @Author: boyyang
 * @Date: 2022-01-01 23:23:55
 * @LastEditTime: 2022-01-04 10:49:32
 * @LastEditors: boyyang
 * @Description: 项目入口文件
 * @FilePath: \boyyang\src\main.ts
 */

import App from './App.vue'
import { createApp } from 'vue'
import { setupRouter, router } from './router'
import { setupStore } from '@/store'

const bootstrap = async () => {
    const app = createApp(App)
    
    // 挂载store
    setupStore(app)

    // 挂载路由
    setupRouter(app)

    // 路由挂载完毕
    await router.isReady()


    app.mount('#app')
}

void bootstrap()
  1. store文件下创建moudules文件夹在moudules文件下添加文件user.ts以下是user.ts文件内容
/*
 * @Author: boyyang
 * @Date: 2022-01-04 11:03:52
 * @LastEditTime: 2022-01-04 11:15:49
 * @LastEditors: boyyang
 * @Description: 用户信息
 * @FilePath: \boyyang\src\store\modules\user.ts
 */

import { defineStore } from 'pinia'
import { store } from '@/store'

export interface IUserState {
    token: string
}

const useUserStore = defineStore({
    id: 'app-user',
    state: (): IUserState => ({
        token: 'user-token'
    }),

    getters: {
        getToken(): string {
            return this.token
        }
    },

    actions: {
        setToken(token: string) {
            this.token = token
        }
    }
})

const useUserStoreWithOut = () => {
    return useUserStore(store)
}

export {
    useUserStore,
    useUserStoreWithOut
}

  1. setup中使用
<script lang="ts" setup>
import { useUserStore } from '@/store/modules/user'
const userStore = useUserStore()
let token: string = userStore.getToken
</script>
  1. 在非setup中使用如xxx.ts
import { useUserStoreWithOut } from '@/store/modules/user'

const userStore = useUserStoreWithOut()
const token: string = userStore.getToken
posted @ 2022-01-04 11:44  boyyang  阅读(1306)  评论(0编辑  收藏  举报
//黑猫咪:https://unpkg.com/live2d-widget-model-hijiki@1.0.5/assets/hijiki.model.json //白猫咪:https://unpkg.com/live2d-widget-model-tororo@1.0.5/assets/tororo.model.json //萌娘:https://unpkg.com/live2d-widget-model-shizuku@1.0.5/assets/shizuku.model.json //狗狗:https://unpkg.com/live2d-widget-model-wanko@1.0.5/assets/wanko.model.json //萌妹1号:https://unpkg.com/live2d-widget-model-z16@1.0.5/assets/z16.model.json //萌妹2号:https://unpkg.com/live2d-widget-model-koharu@1.0.5/assets/koharu.model.json //萌妹3号:https://unpkg.com/live2d-widget-model-hibiki@1.0.5/assets/hibiki.model.json //妹子4号:https://unpkg.com/live2d-widget-model-izumi@1.0.5/assets/izumi.model.json //妹子5号:https://unpkg.com/live2d-widget-model-miku@1.0.5/assets/miku.model.json //6号:https://unpkg.com/live2d-widget-model-nico@1.0.5/assets/nico.model.json //7号:https://unpkg.com/live2d-widget-model-ni-j@1.0.5/assets/ni-j.model.json //8号:https://unpkg.com/live2d-widget-model-nipsilon@1.0.5/assets/nipsilon.model.json //9号:https://unpkg.com/live2d-widget-model-nito@1.0.5/assets/nito.model.json //10号:https://unpkg.com/live2d-widget-model-tsumiki@1.0.5/assets/tsumiki.model.json //11号:https://unpkg.com/live2d-widget-model-unitychan@1.0.5/assets/unitychan.model.json //帅哥1号:https://unpkg.com/live2d-widget-model-chitose@1.0.5/assets/chitose.model.json //帅哥2号:https://unpkg.com/live2d-widget-model-haruto@1.0.5/assets/haruto.model.json