美文网首页
[pinia快速入门]4.使用其他的store

[pinia快速入门]4.使用其他的store

作者: 林哥学前端 | 来源:发表于2021-11-09 08:31 被阅读0次

    在这个例子中,我们在新写一个permissionStore,来存储我们的权限数组,这个store中我们需要使用到之前定义的profileStore。其实用起来很简单,直接导入进来使用就行了:
    新加的权限模块的store,文件名为permissionStore.js:

    import { defineStore } from 'pinia'
    import { useProfileStore } from './profileStore' // 导入其他的store
    export const usePermissionStore = defineStore('permission', {
      state() {
        return {
          list: ['add', 'delete', 'update', 'query'], // 权限列表
        }
      },
      getters: {
        permissionList(state) {
          const profileStore = useProfileStore()
          if (profileStore.userName === '林哥') { // 如果用户名是‘林哥’,那么有所有权限
            return ['*']
          } else {
            return state.list
          }
        },
      },
    })
    

    然后我们在App.vue中使用permissionStore就行了,我们还是简化一下,把权限显示在页面上就行了:

    <template>
      <div>用户名是: {{ profileStore.userName }}</div>
      <div>手机号是: {{ profileStore.phoneHiddenPlus('+86') }}</div>
      <div>权限列表是: {{ permissionStore.permissionList }}</div>
    </template>
    
    <script setup>
    import { onMounted } from 'vue'
    import { useProfileStore } from './store/profileStore'
    import { usePermissionStore } from './store/permission' // 新增
    const profileStore = useProfileStore()
    const permissionStore = usePermissionStore() // 新增
    onMounted(() => {
      profileStore.login('林哥', '9527')
    })
    </script>
    

    最后页面就可以显示出权限:

    用户名是: 林哥
    手机号是: +86188****8888
    权限列表是: [ "*" ]

    这样跨模块的store互相调用就完成了,就是这么简单。

    关于pinia的入门教程就到这里了,有关pinia更详细的文档我已经翻译成了中文,可以在开发时候查阅
    pinia中文文档

    相关文章

      网友评论

          本文标题:[pinia快速入门]4.使用其他的store

          本文链接:https://www.haomeiwen.com/subject/qpurzltx.html