用Pinia.js 来重构一下之前Vuex的一个小Demo

简介: # PiniaPinia 是一个用于 Vue 的状态管理库,类似 Vuex, 是 Vue 的另一种状态管理方案 Pinia 支持 Vue2 和 Vue3。# Pinia的优势1.Pinia拥有完整的 typescript 的支持;2. 无mutations,相比Vuex更简单,更容易上手。3. 自动添加Pinia,无需创建store,简化开发。4. actions对同步异步支持非常好。5. 代码分割好,非常优雅便于维护。# pinia的安装`npm install pinia --save`# srore/index.ts先看一下store/index.

Pinia

Pinia 是一个用于 Vue 的状态管理库,类似 Vuex, 是 Vue 的另一种状态管理方案
Pinia 支持 Vue2 和 Vue3。

Pinia的优势

1.Pinia拥有完整的 typescript 的支持;

  1. 无mutations,相比Vuex更简单,更容易上手。
  2. 自动添加Pinia,无需创建store,简化开发。
  3. actions对同步异步支持非常好。
  4. 代码分割好,非常优雅便于维护。

pinia的安装

npm install pinia --save

srore/index.ts

先看一下store/index.ts文件内容

    import { createPinia } from "pinia";

    const store = createPinia();

    export default store;

首先首行导入createPinia函数,然后通过调用createPinia()来创建store。

store/users.ts的demo

//src/store/user.ts

import { defineStore } from 'pinia'

export const useUserStore = defineStore({
  id: 'user', // id必填,且需要唯一
  state: () => {
    return {
      name: '张三'
    }
  },
  actions:{
    updataName(name:string):void {
        this.name = name;
    }
  }
})

我们首先导入了defineStore的方法,定义了id:'user',id必填,且需要唯一

state中return出去变量。在actions(0中定义函数方法。

接下来我们看一下main.ts的内容。

main.ts

import { createApp } from 'vue'
import './style.css'
import App from './App.vue'
import store from './store';

const app = createApp(App);
app.use(store);
app.mount("#app");

我们注意,要use下store.

App.vue的内容

代码如下:

<template>
  <div>{{ userStore.name }}</div>
</template>

<script lang="ts" setup>
import { useUserStore } from './store/user'

const userStore = useUserStore();
userStore.updataName("李四");
</script>

我们正常创建组件部分和脚本部分。

我们记得从'./store/user'中导出useUserStore。

const userStore = useUserStore();

创建userStore,通过 useUserStore()来完成创建。

接下来我们调用userStore.updataName()的方法(之前在user.ts中定义的方法)记得传参。

userStore.updataName("李四");

看看效果吧

我们调出控制台

输入

npm run dev

好耶,vite还是很快的完成了。

image.png

看看

我们最后显示出来的字体是 李四

而不是张三

说明我们定义的修改的函数生效了。

相关文章
|
JavaScript 前端开发 Python
Node.js在Python中的应用实例demo
Node.js在Python中的应用实例demo
104 2
|
存储 JavaScript 前端开发
Vuex详解:Vue.js的状态管理方案
Vuex详解:Vue.js的状态管理方案
139 1
|
6月前
|
前端开发 应用服务中间件 nginx
Next.js 创建项目到服务器部署(目录结构介绍、项目结构Demo、开发细节注意)
Next.js 创建项目到服务器部署(目录结构介绍、项目结构Demo、开发细节注意)
929 0
|
1月前
|
存储 JavaScript 前端开发
前端技术分享:使用Vue.js与Vuex管理状态
【10月更文挑战第1天】前端技术分享:使用Vue.js与Vuex管理状态
44 6
|
2月前
|
算法 JavaScript 前端开发
第一个算法项目 | JS实现并查集迷宫算法Demo学习
本文是关于使用JavaScript实现并查集迷宫算法的中国象棋demo的学习记录,包括项目运行方法、知识点梳理、代码赏析以及相关CSS样式表文件的介绍。
第一个算法项目 | JS实现并查集迷宫算法Demo学习
|
22天前
|
存储 JavaScript 前端开发
深入理解 Vuex:Vue.js 状态管理的利器
【10月更文挑战第11天】 深入理解 Vuex:Vue.js 状态管理的利器
23 2
|
22天前
|
存储 缓存 JavaScript
深入探讨 Vuex:Vue.js 状态管理的最佳实践
【10月更文挑战第11天】深入探讨 Vuex:Vue.js 状态管理的最佳实践
18 0
|
2月前
|
JavaScript 前端开发
JS配合CSS3实现动画和拖动小星星小Demo
本文通过代码示例展示了如何使用JavaScript和CSS3实现动画效果和拖动小星星的交互效果,包括文字掉落动画和鼠标拖动产生小星星动画的实现方法。
41 0
JS配合CSS3实现动画和拖动小星星小Demo
|
1月前
|
JavaScript 前端开发 开发者
使用 Vue.js 和 Vuex 构建响应式前端应用
【10月更文挑战第2天】使用 Vue.js 和 Vuex 构建响应式前端应用
27 0
|
3月前
|
JavaScript 前端开发
JavaScript——一个简单的队列Demo
JavaScript——一个简单的队列Demo
39 4