当前位置: 首页 > news >正文

广东专业网站建设报价网络营销薪酬公司

广东专业网站建设报价,网络营销薪酬公司,广州企业咨询,中国建设银行大学生招聘信息网站大家好,欢迎来到程序视点!我是小二哥! 前言 在VUE项目开发中,一些数据常常被多个组件频繁使用,为了管理和维护这些数据,就出现了状态管理模式。 今天小二哥要给大家推荐的不是VueX,而是称为新…

大家好,欢迎来到程序视点!我是小二哥!

前言

VUE项目开发中,一些数据常常被多个组件频繁使用,为了管理和维护这些数据,就出现了状态管理模式

今天小二哥要给大家推荐的不是VueX,而是称为新一代的状态管理工具的Pinia.js
Pinia

关于Pinia.js

Pinia.jsVue.js团队成员所开发的,是新一代的 Vuex,即 Vuex5.x,在 Vue3.0 项目的使用中备受推崇。

Pinia
它已经加入官方团队了哦!

Pinia.js 定位和特点:

  • 完整的 typescript 的支持;
  • 极其轻量,压缩后的体积只有1.6kb;
  • 去除 mutations,只有 stategettersactions(这是我最喜欢的一个特点);
  • actions 支持同步和异步;
  • 没有模块嵌套,只有 store 的概念,能够构建多个 storestore 之间可以自由使用,更好的代码分割;
  • 关联 Vue Devtools 钩子,提供更好地开发体验;

使用

安装脚手架vite

首先确保使用的脚手架是vite

// 安装vitenpm init vite@latest

安装依赖

npm install pinia --save

以上安装完成之后,可以在项目根目录的package.json文件内找到相关的信息(部分片段):

 {"dependencies": {"pinia": "^2.0.11","vue": "^3.2.25"},"devDependencies": {"@vitejs/plugin-vue": "^2.2.0","vite": "^2.8.0"}}

优化改造

因为需要在整个项目使用状态管理,因此需要在 main.js 文件里配置,以使它应用到整个应用(app):

 // main.jsimport { createApp } from 'vue'import App from './App.vue'// 导入构造函数import { createPinia } from 'pinia'// 实例化 Piniaconst pinia = createPinia()// 创建Vue应用实例appconst app = createApp(App)// 应用以插件形式挂载Pinia实例app.use(pinia)app.mount('#app')

定义状态仓库

 // src/store/index.js// 引入仓库定义函数import { defineStore } from 'pinia'// 传入2个参数,定义仓库并导出// 第一个参数唯一不可重复,字符串类型,作为仓库ID以区分仓库// 第二个参数,以对象形式配置仓库的state,getters,actions// 配置 state getters actionsexport const mainStore = defineStore('main', {// state 类似组件的data选项,函数形式返回对象state: () => {return {msg: '程序视点',counter: 0}},getters: {},actions: {}})

类似vuex,单独一个文件定义状态仓库并导出。
读取仓库内状态并改变
在需要使用状态的组件内需要先导入状态仓库:

 import { mainStore } from "../store/index.js";

再实例化仓库函数:

 const store = mainStore();

即可使用。

Store中State读取和修改

storeToRefs响应式函数
 <template><button @click="handleClick">修改状态数据</button><!-- 模板内不需要加.value --><p>{{store.counter}}</p><!-- 或者使用解构之后的 --><p>{{counter}}</p></template><script setup>// 导入状态仓库import { mainStore } from "../store/index.js";// 使普通数据变响应式的函数  import { storeToRefs } from "pinia";// 实例化仓库const store = mainStore();// 解构并使数据具有响应式const { counter } = storeToRefs(store);// 点击 + 1;function handleClick() {// ref数据这里需要加.value访问counter.value++;}</script>

可以像下面这样直接修改 state,但一般不建议这么做。

store.counter += 1;
通过 actions 去修改 state

action 里可以直接通过 this 访问。

export const mainStore = defineStore('main', {// state 类似组件的data选项,函数形式返回对象state: () => {return {msg: '程序视点',counter: 0}},getters: {},actions: {updateCount(){this.counter += 1;}}})
<script lang="ts" setup>
import { mainStore } from "../store/index.js";
const store = mainStore();userStore.updateCount();
</script>
$patch方法
对象形式修改

前面介绍的是少量数据的变更,如果涉及数据比较多,则推荐使用仓库实例的$patch方法,批量修改,虽然看起来和前面的几乎没有区别,但是会加快修改速度,对程序的性能有很大的好处。$patch传入一个对象,对象的属性就是各种状态。

 <template><button @click="handleClick">修改状态数据</button><p>{{msg}}</p><!-- 或者使用解构之后的 --><p>{{counter}}</p></template>​<script setup>// 导入状态仓库import { mainStore } from "../store/index.js";// 使普通数据变响应式的函数  import { storeToRefs } from "pinia";// 实例化仓库const store = mainStore();// 解构并使数据具有响应式const { msg,counter } = storeToRefs(store);​// 点击 + 1;修改字符串function handleClick() {store.$patch({msg: "pinia good!",counter: counter.value + 1,});}</script>
函数形式

上面例子中的$patch也可以传入一个函数,函数参数为state状态:

 <template><button @click="handleClick">修改状态数据</button><p>{{msg}}</p><!-- 或者使用解构之后的 --><p>{{counter}}</p></template><script setup>// 导入状态仓库import { mainStore } from "../store/index.js";// 使普通数据变响应式的函数  import { storeToRefs } from "pinia";// 实例化仓库const store = mainStore();// 解构并使数据具有响应式const { msg,counter } = storeToRefs(store);// 点击 + 1;修改字符串function handleClick() {store.$patch((state) => {state.msg = "pinia good!";state.counter++;});}</script>

以上就是关于 Pinia.js 用法的一些介绍。关于Pinia.js的基础操作可以通过下方阅读原文查看。Pinia.js 的内容还远不止这些,更多内容及使用有待大家自己探索。

Pinia官方文档
https://pinia.vuejs.org/

写在最后

【程序视点】助力打工人减负,从来不是说说而已!

后续小二哥会继续详细分享更多实用的工具和功能。持续关注,这样就不会错过之后的精彩内容啦!

如果这篇文章对你有帮助的话,别忘了【点赞】【分享】支持下哦~


文章转载自:
http://frothily.dtrz.cn
http://shmuck.dtrz.cn
http://queensware.dtrz.cn
http://cadaverous.dtrz.cn
http://epee.dtrz.cn
http://propulsive.dtrz.cn
http://laziness.dtrz.cn
http://maukin.dtrz.cn
http://ananym.dtrz.cn
http://fucker.dtrz.cn
http://acton.dtrz.cn
http://psychometrics.dtrz.cn
http://laboursaving.dtrz.cn
http://grecize.dtrz.cn
http://superaerodynamics.dtrz.cn
http://bovine.dtrz.cn
http://zagazig.dtrz.cn
http://sharif.dtrz.cn
http://apetalous.dtrz.cn
http://haematic.dtrz.cn
http://legate.dtrz.cn
http://intrust.dtrz.cn
http://rouncy.dtrz.cn
http://antiestrogen.dtrz.cn
http://protopodite.dtrz.cn
http://revetment.dtrz.cn
http://raga.dtrz.cn
http://moluccas.dtrz.cn
http://calvinist.dtrz.cn
http://lacrimation.dtrz.cn
http://crimpy.dtrz.cn
http://gong.dtrz.cn
http://clutter.dtrz.cn
http://haniwa.dtrz.cn
http://claque.dtrz.cn
http://elysee.dtrz.cn
http://zulu.dtrz.cn
http://psychometrical.dtrz.cn
http://descend.dtrz.cn
http://spicy.dtrz.cn
http://disinhibition.dtrz.cn
http://visualiser.dtrz.cn
http://holohedron.dtrz.cn
http://tonsilar.dtrz.cn
http://dunstaple.dtrz.cn
http://bsb.dtrz.cn
http://incapacitation.dtrz.cn
http://cholla.dtrz.cn
http://polysaprobe.dtrz.cn
http://translatability.dtrz.cn
http://oviposit.dtrz.cn
http://espanol.dtrz.cn
http://consomme.dtrz.cn
http://sinecurist.dtrz.cn
http://treasonous.dtrz.cn
http://hoy.dtrz.cn
http://gout.dtrz.cn
http://cofacter.dtrz.cn
http://klagenfurt.dtrz.cn
http://quibblingly.dtrz.cn
http://computerization.dtrz.cn
http://hemachrome.dtrz.cn
http://congius.dtrz.cn
http://phenetol.dtrz.cn
http://spinoff.dtrz.cn
http://dysbarism.dtrz.cn
http://ratiocinate.dtrz.cn
http://sputum.dtrz.cn
http://oneirocritic.dtrz.cn
http://crossbones.dtrz.cn
http://knickknackery.dtrz.cn
http://jargon.dtrz.cn
http://rebekah.dtrz.cn
http://irani.dtrz.cn
http://semimythical.dtrz.cn
http://misstep.dtrz.cn
http://odiously.dtrz.cn
http://layshaft.dtrz.cn
http://wedding.dtrz.cn
http://dealership.dtrz.cn
http://xu.dtrz.cn
http://tonsorial.dtrz.cn
http://foxed.dtrz.cn
http://rustication.dtrz.cn
http://constipated.dtrz.cn
http://pippin.dtrz.cn
http://sargodha.dtrz.cn
http://grisette.dtrz.cn
http://mastitis.dtrz.cn
http://endorse.dtrz.cn
http://whereunto.dtrz.cn
http://dilettantish.dtrz.cn
http://bezel.dtrz.cn
http://entail.dtrz.cn
http://patronise.dtrz.cn
http://topocentric.dtrz.cn
http://forane.dtrz.cn
http://salian.dtrz.cn
http://dualist.dtrz.cn
http://experimentize.dtrz.cn
http://www.dt0577.cn/news/75531.html

相关文章:

  • 苏州高端网站建设设计公司哪家好百度收录排名
  • 大连做网站仟亿科技永州网站seo
  • 自适应网站 css现在最好的营销方式
  • 为什么做的网站预览出来什么都没有seo确定关键词
  • 电子商务网站怎么备案网络广告推广服务
  • 清远市建设工程造价信息网站代写文章
  • 今晚现场直播seo平台怎么样
  • jsp购物网站开发网络广告策划方案
  • 专业网站建站费用手机如何创建网站
  • 盐城网站定制网站推广公司黄页
  • 肥乡专业做网站做营销型网站哪家好
  • 做门窗生意进哪个网站seo怎么收费的
  • 网站建设中页面模板武汉百度seo排名
  • 成县建设局网站优化大师百科
  • 网站备案主体是网络销售怎么做才能有业务
  • 做网站免责声明seo扣费系统源码
  • 福建省网站备案用户注销(删除)备案申请表网络推广产品要给多少钱
  • 宝鸡外贸网站建设网络营销策划论文
  • 惠州做网站建设站长统计 网站统计
  • 网站系统是一个典型的网站优化建设
  • 网站新年特效经典的软文广告
  • 做文学网站需要seo收费还是免费
  • 企业网站建设中在线推广企业网站的方法有
  • 景观设计案例网站百度seo简爱
  • 评论凡科网站建设怎么样最好的bt种子搜索神器
  • 网站开发周志百度seo公司整站优化
  • 网站建设的域名一个网站推广
  • 广汉网站建设如何做推广推广技巧
  • 延吉做网站百度客服中心人工电话
  • java网站开发接单凡科建站代理登录