vuex的替代插件pinia

这篇博客介绍了Pinia,它是Vuex的一个简化版,同时支持Vue2和Vue3。通过示例展示了如何创建和使用Pinia store,包括定义state、getters和actions,以及在组件中如何通过mapState和mapActions来映射和调用这些状态和方法。此外,还提供了官方文档链接供读者深入学习。
摘要由CSDN通过智能技术生成

pinia 是vuex的简化版,兼容vue2和vue3

基本使用如下:

  1. 下载:yarn add pinia@next 或者 npm install pinia@next
  2. 创建store仓库:
//  store/index.ts
import { defineStore } from 'pinia';
type stateType = {
    name: String,
    type: String,
    dataList: String[]
}
export const piniaStore = defineStore('main', {
    state: ():stateType => ({
        name: '玛丽',
        type: 'admin',
        userList: []
    }),
    getters: {
        getName: state => state.name
    },
    actions: {
        async addNameDelay(data:String) {
            console.log('stoewadd--',data)
            await new Promise((reslove,reject) => {
                setTimeout(() => {
                    console.log('延迟一秒')
                    this.userList.push(data)
                    reslove('ok'); 
                }, 1000)
            })
        }
    }

})
  1. 在main.ts文件使用
import { createApp } from 'vue'
import App from './App.vue'
import router from './router'

createApp(App)
    .use(router)
    .use(createPinia())
    .mount('#app')
  1. 在组件中使用
// 引入store和映射方法
import {piniaStore} from '@/store/pinia'
import {mapActions, mapState} from 'pinia'
export default defineComponent({
  name: 'uList',
  data () {
    return {
      dataList: [],
      store: '',
      searchKey: '',
      add: {}
    }
  },
  computed: {
    ...mapState(piniaStore, ['name', 'getName']), // state 和getters都使用mapState映射获取
  },
  methods: {
  	...mapActions(piniaStore, ['addNameDelay'])  // 使用mapActions获取actions方法
  },
  mounted() {
     /**state, getters,actions 都可以通过store直接点出来 **/
    // const store = piniaStore();
    // console.log('获取state里面的name ===', store.name)
    // console.log('获取getters里面的getName===', store.getName)
    // console.log('调用actions里面的方法 ===', store.addNameDelay('ssf'))
    
  },
  
  ...

官方文档:https://pinia.vuejs.org/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值