pinia(vue3)

收藏

参考网址: https://github.com/vuejs/rfcs/pull/271

大致总结:

支持选项式api和组合式api写法

pinia没有mutations,只有:state、getters、actions

可以模拟模块化

import { defineStore } from 'pinia'

import { userStore } from '@/store/user'

export const useGlobalStore = defineStore('global', {
    state(){
        return {
            user:userStore(),
        }
    }
})

TypeScript支持很好

自动化代码拆分

pinia体积更小(性能更好)        

pinia可以直接修改state数据            

pinia使用

        官方网址:https://pinia.vuejs.org/

        具体使用:https://xuexiluxian.cn/blog/detail/242b0ed71feb412991f04d448fc86636                                                                                                                                                           <script s

<script setup>
 import { storeToRefs } from 'pinia'
 import {useStore} from './store'
  const store=useStore()
  let{name,num,changeNum}=storeToRefs(store)
  const changeName=()=>{
      name.value='李四'//修改数据   
       // 也可以批量修改    
       store.$patch(state=>{ 
              state.num++   
               state.name='炸雷'    
        })}
 const btn=()=>{   
  store.upNum(200)}
  //重置
 const reset =()=>{
 store.$reset()}
 </script>

store.js

import { defineStore } from 'pinia'
export const useStore = defineStore('storeId', {
  state: () => {
    return {
      num: 0,
      name: 'Eduardo',
    }
  },
  getters:{
    changeNum(){
        console.log('getters')
        return this.num+1000
    }
  },
  actions:{
    upNum(val){
        this.num+=val
    }
  }
})

也可以写成

export const user=defineStore({
  id:'user',
  state:()=>{}
})

pinia的持久化存储

参考链接:https://xuexiluxian.cn/blog/detail/acebacd99612447e8c80dcf6354240f6

重置

image.png

状态管理(pinia)

     1 vuex和pinia区别:

        1> pinia是没有mutations、modules

            不过,pinia没有modules我们在项目中也会模拟一个global文件来进行管理

        2> pinia的actions可以直接返回同步/异步,组件是可以直接使用这个值的

            vuex如果使用mutations直接返回一个值,那么是不可以在组件使用的,必须赋值给state

        3> 修改state值的问题

            pinia可以直接state的值

            vuex也可以修改,但是要修改源头==》this.$store.state.xxx

                ***注意:不能直接修改mapState的"克隆值"

            pinia或vuex中使用mapState是不可以直接修改值的

                但是pinia中有:mapWritableState

评论(

您还未登录,请先去登录
表情
查看更多

相关作者

  • 获取点赞0
  • 文章阅读量264

相关文章

联系小鹿线

咨询老师

咨询老师

扫码下载APP