Vite+TS项目:论如何便捷的使用pinia

本文介绍了Vue新推出的轻量级状态管理库Pinia,讲解了其特点如组件式定义、TypeScript支持,以及如何通过定义store、actions和getters进行操作。提供了详细的使用步骤和实例,适合初学者入门。
摘要由CSDN通过智能技术生成

这里给大家分享我在网上学习总结出来的一些知识,希望对大家有所帮助

pinia

介绍

vue新一代状态管理库,相当于vuex

特性

1.像定义components一样定义store

2.支持ts

3.去除mutations,只有state,getters,actions(支持同步异步)

4.轻量级(1kb)

5.vuex是要有主入口进行统一导入,pinia可以分模块导入

pina简单使用

1.导入path
项目全局安装  @type/node

npm install @types/node --save-dev
2.config设置@指标

 3.tsconfig.json设置@指标

4.导入pinia
项目全局安装  pinia

npm install pinia --save-dev
5.全局导入pinia

 6.store内容设置案例

 内容:

import { defineStore } from 'pinia'
export default defineStore('myGlobalState', {
    state: () => {
        return {
            count: 1,
            message: 'Hello world',
            phone: 13811111199
        }
    },
    actions:{
        countAdd(){
            this.count++
        }
    },
    getters:{
        countSum(state){
            return state.count*2
        }
    }
})
 7.demo调用方法展示
<script setup lang="ts">
import useCommonStore from '@/store/index'
import {storeToRefs} from "pinia";
const store = useCommonStore()
const data = storeToRefs(store)
// 常规方法修改内容
const storeAdd = ()=>{
  data.count.value++
}
// $patch修改内容
const storeAddOne = ()=>{
  store.$patch({
    count:store.count+1
  })
}
// $patch修改内容,内带对象
const storeAddTwo = ()=>{
  store.$patch((state)=>{
    state.count++
  })
}
// $state修改整体内容
const storeRest = ()=>{
  store.$state = {
    count: 1,
    message: 'Hello world',
    phone: 13811111199
  }
}
// $reset重置为初始内容
const storeRestOne = ()=>{
  store.$reset()
}
// $subscribe监听整个仓库变化
store.$subscribe((mutation,store)=>{
  console.log("mutation",mutation)
  console.log("store",store)
})
</script>

<template>
  <div class="box">
    <h2>
      {{store.count}}
      getters获取值{{store.countSum}}
      <el-button @click="storeAdd" type="primary">添加一</el-button>
      <el-button @click="storeAddOne" type="primary">添加二</el-button>
      <el-button @click="storeAddTwo" type="primary">添加三</el-button>
      <el-button @click="storeRest" type="primary">重置一</el-button>
      <el-button @click="storeRestOne" type="primary">重置二</el-button>
      <el-button @click="store.countAdd" type="primary">actions调用</el-button>
    </h2>
  </div>
</template>

<style scoped lang="stylus">
.box
  text-align center
  line-height 150px
</style>

如果对您有所帮助,欢迎您点个关注,我会定时更新技术文档,大家一起讨论学习,一起进步。

 

你好!对于使用 Vue 3、TypeScript 和 Vite 来搭建项目,并结合 Pinia 进行状态管理,你可以按照以下步骤进行操作: 1. 首先,确保你已经安装了 Node.js 和 npm(或者使用 yarn)。 2. 创建一个新的项目文件夹,并进入该文件夹。 3. 在终端运行以下命令来初始化一个新的 Vue 3 项目: ``` npm init vite@latest ``` 在初始化过程,选择使用 Vue 3、TypeScript 和默认配置。 4. 进入项目文件夹并安装依赖: ``` cd <project-folder> npm install ``` 5. 接下来,安装 Pinia: ``` npm install pinia ``` 6. 在 `src` 目录下创建一个 `store` 文件夹,并在其创建名为 `index.ts` 的文件。 7. 在 `index.ts` 编写你的 Pinia store。例如,你可以创建一个名为 `counter` 的 store,并且在其定义一个状态和一些操作: ```typescript import { defineStore } from 'pinia'; export const useCounterStore = defineStore('counter', { state: () => ({ count: 0, }), actions: { increment() { this.count++; }, decrement() { this.count--; }, }, }); ``` 8. 在应用的入口文件 `main.ts` 导入并使用 Pinia: ```typescript import { createApp } from 'vue'; import { createPinia } from 'pinia'; import App from './App.vue'; const app = createApp(App); const pinia = createPinia(); app.use(pinia); app.mount('#app'); ``` 9. 在组件使用 Pinia store。在你的 Vue 组件,可以使用 `useStore` 函数来访问 Pinia store: ```typescript import { useCounterStore } from '../store'; export default { setup() { const counterStore = useCounterStore(); return { counterStore, }; }, }; ``` 10. 最后,你可以在组件使用 `counterStore` 来访问状态和操作: ```vue <template> <div> <p>{{ counterStore.count }}</p> <button @click="counterStore.increment()">Increment</button> <button @click="counterStore.decrement()">Decrement</button> </div> </template> <script> import { useCounterStore } from '../store'; export default { setup() { const counterStore = useCounterStore(); return { counterStore, }; }, }; </script> ``` 这样,你就可以使用 Vue 3、TypeScript、Vite 和 Pinia 搭建一个基本的项目并进行状态管理了。希望对你有帮助!如果还有其他问题,请随时问我。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值