Pinia的使用指南

本文详细介绍了Pinia,Vue的状态管理库,及其优势(如支持Vue2/3、简化流程和TypeScript支持),并展示了如何在Vue3项目中安装、配置和创建Store,以及在组件中使用它进行状态管理的示例。
摘要由CSDN通过智能技术生成

本次博客主要讲解pinia的使用指南

创建一个根实例
<div class="about">
    <div class="store">
        <h1>在组件中你可以这样使用定义的Store</h1>
        <h2>FirstName:{{userStore.firstName}}</h2>
        <h2>LastName:{{userStore.lastName}}</h2>
        <h2>FullName:{{userStore.fullName}}</h2>
    </div>
</div>

一 : 什么是Pinia

        1: Pinia与Vuex一样,也是Vue的状态管理库,作为Vuex的代替者,pinia后来居上,已经成为了开发者首选的状态管理工具

        2: pinia的优势有哪些

                2.1: 同时支持Vue2和Vue3
                2.2: 简化了状态管理流程,pinia抛弃了Mutation,这意味着你可以直接更新状态,不用再注册Commit
       2.3: 提供了更好的TypeScript支持,语法上更加贴近Composition Api

二 : 如何使用

        1: 首先以一个新的Vue3项目为例,您可以通过npm init vue 命令,初始化一个项目,安装时关于Pinia选项选择Yes即可

        2: 在项目的src/stores目录下,新建一个index.ts文件作为Pinia的入口文件,并创建跟Store

        3: 在main.ts中引用使用即可

        4: 好处
            4.1: 保证main.ts里的代码整洁
            4.2: 后期可能会使用一些Pinia插件,将这部分内容写在一起有利于后期维护
            4.3: 符合模块化开发的思想

        在引用store之后,可以在src/stores目录下新建一个modules文件夹用于定义Store。这样我们的pinia就可以投入使用了

三 : 创建一个Store

         1: 我们在开发中需要根据模块划分状态,这样才方便我们统一管理不同模块下的状态,比如我们开发中会设计到用户模块,因此我们可以在src/stores/modules目录下新建一个user.ts文件用于用户状态管理,将 通过下列代码创建user Store

        2: 在大多数情况下,state都是你的store的核心,人们通常会先定义能代表他们APP的state,在Pinia中,state被定义为一个返回初始状态的函数.这使得Pinia可以同时支持服务端和客户端

        3: 使用方法 :定义的Store是个函数,在组件中需要调用后才能使用

        4: 写到这,pinia就写的差不多了,你就差不多能使用Pinia进行状态管理

<script>
    //总代码
    import useUserStore from '@/stores/modules/user'
    const userStore=useUserStore()
    // 二-1.2代码
    import { createPinia } from 'pinia'
    const store=createPinia()
    export default store
    // 二-1.3代码
    import store from './stores'
    app.use(store)
    // 三 代码演示
    import { defineStore } from 'pinia'
    interface IUserState{
        firstName:string
        lastName:string
    }
    const useUserStore=defineStore('user',{
        state:():IUserState=>({
            firstName:'Liu',
            lastName:'Dehua'
        }),
        getters:{
            fullName():string{
                return this.firstName + ' ' + this.lastName
            }
        }
    })
    export default useUserStore
    // 还有一种方式定义Store,就是以函数的形式。
    import { defineStore } from 'pinia'
    import { reactive,toRefs } from 'vue'
    interface IUserState{
        firstName:string
        lastName:string
    }
    const useUserStore=defineStore('user',()=>{
        const state=reactive<IUserState>({
            firstName:'li',
            lastName:'jianmin'
        })
        const fullName=():string=>state.firstName + ' ' + state.lastName
        return {
            ...toRefs(state),
            fullName
        }
    })
</script>


    

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Vue3中调用Pinia中的方法,首先需要导入`createPinia`函数来创建Pinia实例,并将其挂载到Vue应用中。然后,你可以通过使用`useStore`函数来获取仓库实例,然后调用相应的方法。 以下是具体的步骤: 1. 首先,在你的Vue应用的入口文件(通常是main.js)中导入`createApp`函数、`createPinia`函数和相关的组件。 2. 创建Vue应用实例,使用`createApp`函数,并通过`.use()`方法引入所需的插件,例如路由和Pinia。 3. 使用`createPinia()`函数创建Pinia实例,并通过`.use()`方法挂载到Vue应用实例中。 4. 使用`.mount()`方法将Vue应用实例挂载到HTML文件中的某个DOM元素中。 在主组件中,你可以通过使用`useStore`函数来获取仓库实例,并调用相应的方法。 以下是示例代码: ```javascript // 导入所需的模块和组件 import { createApp } from 'vue' import { createPinia, useStore } from 'pinia' import App from './App.vue' import router from './router' // 创建Vue应用实例 const app = createApp(App) // 引入路由 app.use(router) // 创建Pinia实例,并挂载到Vue应用实例中 const pinia = createPinia() app.use(pinia) // 将Vue应用实例挂载到DOM元素中 app.mount('#app') // 在组件中调用Pinia中的方法 export default { setup() { // 获取仓库实例 const store = useStore() // 调用相应的方法 store.someMethod() } } ``` 请注意,上述代码仅为示例,具体使用方式可能会根据你的项目结构和需求而有所不同。建议查阅Pinia的官方文档以获取更详细的使用指南。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [uniapp+vue3+pinia框架(模块化+持久化存储)](https://download.csdn.net/download/qq_35079107/87910679)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [vue3中pinia的使用](https://blog.csdn.net/qq_45802301/article/details/127601857)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值