用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

看看

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

而不是张三

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

相关文章
|
11月前
|
JavaScript 前端开发 Python
Node.js在Python中的应用实例demo
Node.js在Python中的应用实例demo
87 2
|
11月前
|
存储 JavaScript 前端开发
Vuex详解:Vue.js的状态管理方案
Vuex详解:Vue.js的状态管理方案
127 1
|
4月前
|
前端开发 应用服务中间件 nginx
Next.js 创建项目到服务器部署(目录结构介绍、项目结构Demo、开发细节注意)
Next.js 创建项目到服务器部署(目录结构介绍、项目结构Demo、开发细节注意)
837 0
|
3天前
|
JavaScript 前端开发
JS配合CSS3实现动画和拖动小星星小Demo
本文通过代码示例展示了如何使用JavaScript和CSS3实现动画效果和拖动小星星的交互效果,包括文字掉落动画和鼠标拖动产生小星星动画的实现方法。
12 0
JS配合CSS3实现动画和拖动小星星小Demo
|
1月前
|
JavaScript 前端开发
JavaScript——一个简单的队列Demo
JavaScript——一个简单的队列Demo
34 4
|
28天前
|
存储 JavaScript 前端开发
Vue.js + Vuex:解锁前端复杂应用的神秘钥匙,探索状态管理的新境界!
【8月更文挑战第30天】Vue.js结合Vuex状态管理,为复杂前端应用提供了解锁高效与优雅的金钥匙。Vue.js凭借简洁的API和高效虚拟DOM更新机制广受好评,但在大规模应用中,组件间状态共享变得复杂。这时,Vuex通过中心化状态存储,使状态管理清晰可见,如同为Vue.js应用增添智慧大脑。例如,在购物车应用中,Vuex通过`state`、`mutations`、`actions`和`getters`清晰管理状态,简化组件间状态同步,减少耦合,确保单一状态源,使开发更加高效有序。在Vue.js的世界里,Vuex是一位智慧管家,让前端开发不仅高效,更成为一门艺术。
11 0
|
28天前
|
存储 JavaScript 前端开发
【Vue.js的神秘力量】一键解锁:如何让Bootstrap和Vuex成为你的开发超能力?
【8月更文挑战第30天】Vue.js是一个轻量且灵活的JavaScript框架,易于上手且功能强大。为提高开发效率和应用交互性,常需集成第三方库。本文介绍如何在Vue.js项目中集成Bootstrap和Vuex,及其它常见第三方库。Bootstrap提供响应式设计和预制组件,通过安装插件和引入CSS/JS即可集成;Vuex作为官方状态管理库,通过安装并创建store来管理组件状态。此外,Vue.js还可轻松集成Axios和Vue Router等库,提升HTTP请求和页面路由功能。合理选择和集成第三方库能显著提升开发效率,但需保持代码可维护性和可读性。
17 0
|
28天前
|
前端开发 JavaScript 开发者
Vue.js 与第三方库的神秘融合:Bootstrap、Vuex 等究竟带来何种惊喜?
【8月更文挑战第30天】Vue.js 作为一款流行的前端框架,凭借其强大的功能和易用性深受开发者喜爱。它不仅能独立运作,还能无缝集成各种第三方库,显著提升开发效率。例如,通过 `vue-bootstrap`,我们可以轻松引入 Bootstrap 的响应式组件,快速打造美观的用户界面;借助 Vuex,Vue 提供的状态管理方案,能有效解决复杂应用中的状态共享难题。此外,诸如 `axios` 和 `moment` 等库也能进一步增强 Vue 的功能,使其成为构建高性能前端应用的理想选择。
29 0
|
28天前
|
设计模式 JavaScript 前端开发
Vue.js 与第三方库的奇妙融合,Bootstrap 和 Vuex 究竟能带来何种意想不到的变革?
【8月更文挑战第30天】在现代Web开发中,结合使用JavaScript设计模式与框架如Vue.js能显著提升代码质量和项目的可维护性。本文探讨了常见JavaScript设计模式及其在Vue.js中的应用。通过具体示例介绍了工厂模式、单例模式和策略模式的应用场景及其实现方法。例如,工厂模式通过`NavFactory`根据用户角色动态创建不同的导航栏组件;单例模式则通过全局事件总线`eventBus`实现跨组件通信;策略模式用于处理不同的表单验证规则。这些设计模式的应用不仅提高了代码的复用性和可维护性,还使得Vue应用更加模块化和灵活。
12 0
|
29天前
|
移动开发 JavaScript 前端开发
[译] 从头为 Vue.js 3 实现 Vuex
[译] 从头为 Vue.js 3 实现 Vuex