首页 > 其他分享 >Pinia是一个全新的Vue状态管理库,是Vuex的代替者,尤雨溪强势推荐

Pinia是一个全新的Vue状态管理库,是Vuex的代替者,尤雨溪强势推荐

时间:2022-09-21 12:00:35浏览次数:93  
标签:Vue 尤雨溪 image state getter png Pinia store

Pinia优势

Pinia是一个全新的Vue状态管理库,是Vuex的代替者,尤雨溪强势推荐

  1. Vue2 和 Vue3 都能支持
  2. 抛弃传统的 Mutation ,只有 state, getter 和 action ,简化状态管理库
  3. 不需要嵌套模块,符合 Vue3 的 Composition api,让代码扁平化
  4. TypeScript支持
  5. 代码简介,很好的代码自动分割

Pinia 基本使用

初始化项目: npm init vite@latest
安装Pinia: npm i pinia
挂载Pinia


  image.png

创建Store


  image.png
使用Store
  image.png

解构store

当store中的多个参数需要被使用到的时候,为了更简洁的使用这些变量,我们通常采用结构的方式一次性获取所有的变量名

ES传统方式解构(能获取到值,但是不具有响应性)


  image.png

Pinia解构方法:storeToRefs


  image.png

Pinia修改数据状态

简单数据修改
简单数据直接通过在方法中操作 store.属性名 来修改

  image.png
多条数据修改
通过基础数据修改方式去修改多条数据也是可行的,但是在 pinia 官网中,已经明确表示patch 的方式是经过优化的,会加快修改速度,对性能有很大好处,所以在进行多条数据修改的时候,更推荐使用patch
$patch 方法可以接受两个类型的参数,函数 和 对象

 

  • $patch + 对象
  • $patch + 函数: 通过函数方式去使用的时候,函数接受一个 state 的参数,state 就是 store 仓库中的 state


      image.png

通过action修改

  • Store.actions中添加 changeState 方法


      image.png
  • 组件方法调用 store.方法名


      image.png

Pinia中的Getters

Pinia 中的 getter 和 Vue 中的计算属性几乎一样,在获取 State值之前做一些逻辑处理

  • getter 中的值有缓存特性,如果值没有改变,多次使用也只会调用一次
  1. 添加 getter方法


      image.png
  2. 组件内多次调用


      image.png
      image.png
  • getter 中不仅可以传递 state 直接改变数据状态,还可以使用 this 来改变数据


      image.png

store之间的相互调用

在 Pinia 中,可以在一个 store 中 import 另外一个 store ,然后通过调用引入 store 方法的形式,获取引入 store 的状态

  • 新建 store


      image.png
  • 在原 store 中引入 allanStore,并获取 moveList


      image.png
  • 组件中使用 mainStore.getAllanStoreList


      image.png

总结

总得来说,Pinia 就是 Vuex 的替代版,可以更好的兼容 Vue2,Vue3以及TypeScript。在Vuex的基础上去掉了 Mutation,只保留了 state, getter和action。Pinia拥有更简洁的语法, 扁平化的代码编排,符合Vue3 的 Composition api

作者:mapengfei
链接:https://juejin.cn/post/7078281612013764616
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。



作者:泪滴在琴上
链接:https://www.jianshu.com/p/c45218b4a5e0
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

标签:Vue,尤雨溪,image,state,getter,png,Pinia,store
From: https://www.cnblogs.com/clark1990/p/16715061.html

相关文章

  • 【测试平台开发】——07Vue前端框架实战——restful请求
    本节主要是前后端接口的调用,以及前端如何进行封装接口 一、创建相关文件在文件夹下创建http.js、api.js、user.js1)http.js封装接口:在src下创建api文件夹添加ht......
  • Vue中使用富文本编辑器
    一.下载依赖npmivue-ueditor-wrap-S二.引入组件importVueUeditorWrapfrom'vue-ueditor-wrap'//ES6Module三.注册组件components:{VueUeditorWrap}//......
  • vue富文本(5版本)组件
    <template><div><divstyle="border:1pxsolid#ccc;width:500px"><!--工具栏--><Toolbarstyle="border-bottom:1pxsolid#ccc":editor="......
  • vue中设置class多种方式
    class可以绑定对象数组和函数等<!--第一种:数组直接传递一个数组,注意:这里的class需要使用v-moddel做数据绑定-->33<h1:class="['red','thin']">第一种:数组了......
  • vue +iview Select省市区联动
    因为需要保存的表里只有City_id一个字段,所以这边只保存"区"的值<Rowtype="flex"justify="start"class="code-row-bg"v-show="loginName=='admin'"><Cols......
  • vue下载图片
       asyncworks(obj){   awaitthis.axios({    method:'get',    url:`entryFormController/downloadWork.do`,    param......
  • vue导出文件
    /**导出*/asynctoExcel(){//letresult=awaitthis.axios({//method:'get',//url:`issdc-manage/gameController/export.do`,......
  • vue上传证书
       //队伍证书上传getFile(){varthat=this;////1创建formDataletformData=newFormData();////2添加数据,key可以......
  • vue多图片上传组件
         <template><!--上传控件用法:<upload-widgetv-model="imgUrl"></upload-widget>--><divclass="clearfix"><a-upload......
  • Vue中使用js-audio-recorder实现录音时提示:浏览器不支持getUserMedia!
    场景Vue中使用js-audio-recorder插件实现录音功能并实现上传Blob数据到SpringBoot后台接口:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/126957202上面......