vue和vuex的使用方法,vuex 3

  vue和vuex的使用方法,vuex 3

  在Vue3.x中,可以直接用vue2.x的方法在html代码中检索Vuex的值,但是和js中的vue2.x差别太大了。下面这篇文章主要介绍vuex在vue3中详细使用的相关信息,有需要的可以参考一下。

  

目录

   Vuex是做什么的?什么是国家管理?单页状态管理vuex(vue 3.2 3.2版)多页状态管理vuex store对象属性Vue3 1中获取store实例对象的方法介绍。状态2。突变3。行动4。吸气器5。模块摘要

  

Vuex是做什么的?

  Vue官方:状态管理工具

  

状态管理是什么?

  需要在多个组件之间共享的状态是反应性的,一个变更,所有变更。

  比如一些全球通用的状态信息:用户登录状态、用户名、地理位置信息、购物车中的商品等等。

  这个时候我们就需要这样一个全局状态管理的工具,Vuex就是这样一个工具。

  

单页面的状态管理

  视图-操作-状态

  视图触发动作,改变状态,并响应视图层。

  

vuex(Vue3.2版本)

  Store/index.js创建一个商店对象并导出商店

  从“vuex”导入{ createStore }

  导出默认的createStore({

  状态:{

  },

  突变:{

  },

  动作:{

  },

  模块:{

  }

  })

  Main.js的介绍和使用

  .

  从导入存储。/商店

  .

  app.use(商店)

  

多页状态管理

  

vuex store对象属性介绍

  

Vue3中获取 store 实例对象的方法

  在vue2中,你可以通过这个获得商店的实例对象。$store.xxx

  vue3中的Setup在beforecreate和created之前执行。此时vue对象还没有创建,也没有之前的this,所以这里我们需要用另一种方法来获取store对象。

  从“vuex”/导入{ useStore }/引入use store方法

  Const store=useStore() //此方法用于返回存储实例

  Console.log(store) //存储实例对象

  

1. state

  存储数据的位置。

  状态:{

  数数:100,

  数字:10

  },

  用法:使用方法与vue2.x中的版本大致相同,状态中的属性由$ store.state .属性名获取。

  //模板

  span { { $ store . state . count } }/span

  span{{$store.state.num}}/span

  可以直接更改状态中的数据,但是Vue不建议。因为对于vue开发工具devtools来说,数据更改是直接在state中进行的,devtools无法跟踪。在vuex中,希望可以通过动作(异步操作)或者突变(同步操作)来改变数据,这样就可以在devtools中直接观察到数据的变化和记录,方便开发者调试。

  此外,在vue3中为state中的对象添加或删除属性时,不再需要使用vue.set()或vue.delete()以响应的方式处理对象,对象直接添加的属性已经有了响应的方式。

  

2. mutations

  更新vuex商店状态的唯一方法是提交突变。

  同步可以直接在变异中执行。

  MU主要由两部分组成:

  字符串的事件类型是* *回调函数(handler)**这个回调函数的第一个参数是statemutations: {

  //传入状态

  增量(状态){

  状态.计数

  }

  }

  模板由$store.commit(方法名)触发。

  如果需要在vue3.x中获取** store的实例,需要调用类似useStore **的函数,在vuex中导入。

  //导入useStore函数

  从“vuex”导入{ useStore }

  const store=useStore()

  store.commit(“增量”)

  mution 的参数与传参方法

  Mution接收可以直接写入已定义方法的参数,以接受传递的参数。

  //.状态定义计数

  突变:{

  sum(状态,数字){

  state.count=数字

  }

  }

  通过提交的负载传递参数。

  使用store.commit(mution中的mution名称,要传递的参数)在commit to deliver中添加参数。

  h2 { {这个。$store.state.count}}/h2

  按钮@click=添加(10)/按钮

  .

  脚本设置

  //获取存储实例。请参见上面获取store实例的方法。

  const add=(num)={

  store.commit(sum ,num)

  }

  /脚本

  mution 的提交风格

  如前所述,mution主要包括两部分:类型和回调函数,参数通过commit payload的方式传递(提交)。现在我们可以了

  这样,mution就提交了。

  const add=(num)={

  store.commit({

  Type: sum ,//type是在mution中定义的方法名。

  数字

  })

  }

  .

  突变:{

  总和(状态,有效负载){

  state . count=load . num

  }

  }

  

3. actions

  异步操作在动作中进行,然后传递给变异。

  动作的基本用法如下:

  action中定义的方法的默认参数是** context * *,可以理解为store对象。

  通过context对象获取存储,通过commit触发mution中的方法完成异步操作。

  .

  突变:{

  sum(状态,数字){

  state.count=数字

  }

  },

  动作:{

  //context上下文对象,可以理解为存储

  sum_actions(上下文,数字){

  setTimeout(()={

  Context.commit(sum ,num) //通过上下文触发分段求和

  }, 1000)

  }

  },

  通过模板中的dispatch调用action中定义的sum_action方法。

  //.模板

  store.dispatch(sum_actions ,num)

  通过承诺实现异步操作的完成,并通知组件异步执行的成功或失败。

  //.

  const addAction=(num)={

  store.dispatch(sum_actions ,{

  数字

  }).然后((res)={

  console.log(res)

  }).catch((err)={

  console.log(错误)

  })

  }

  sun_action方法返回一个承诺。当累计值大于30时,将不累计,并抛出错误。

  动作:{

  sum_actions(上下文,有效负载){

  返回新承诺((解决,拒绝)={

  setTimeout(()={

  //通过上下文对象获取计数

  if (context.state.count 30) {

  context.commit(sum ,payload.num)

  解决(“异步操作成功执行”)

  }否则{

  拒绝(新错误(异步操作执行错误))

  }

  }, 1000)

  })

  }

  },

  

4. getters

  类似于组件的计算属性

  从“vuex”导入{ createStore }

  导出默认的createStore({

  状态:{

  学生:[{姓名: mjy ,年龄: 18},{姓名: cjy ,年龄: 22},{姓名: ajy ,年龄: 21}]

  },

  getters: {

  more 20 stu(state){ return state . students . filter(item=item . age=20)}

  }

  })

  用方法名$ store.getters调用。

  //.模板

  H2 { { $ store . getters . more 20 stu } }/H2//显示20岁以下的学生

  getters的参数,getters可以接收两个参数,一个是state,一个是自己的getters,调用自己已有的方法。

  getters: {

  more20stu (state,getters){ return getters . more 20 stu . length }

  }

  getters 的参数与传参方法

  以上是getters的两个固定参数。如果您想将参数传递给getters以过滤年龄超过的人,您可以这样做。

  返回接受年龄并对其进行处理的函数。

  getters: {

  more20stu (state,getters){ return getters . more 20 stu . length },

  moreAgestu(州){

  返回函数(年龄){

  返回state.students.filter(item=

  item.age=年龄

  )

  }

  }

  //这个写法和上面的写法一样但是更简洁。使用es6中的箭头功能。想知道ES6箭头函数的写法,

  //可以看看这篇文章,https://blog.csdn.net/qq_45934504/article/details/123405813? SPM=1001 . 2014 . 3001 . 5501

  moreAgestu_Es6: state={

  返回年龄={

  返回state . students . filter(item=item . Age=Age)

  }

  }

  }

  使用

  //.模板

  H2 { { $ store . getters . more 20 stu } }/H2//显示20岁以下的学生

  H2 { { $ store . getters . moregastu(18)} }/H2//18岁以下的学生通过参数传递显示。

  

5. modules

  当应用变得复杂时,状态中管理的变量变得越来越多,存储对象可能会变得相当臃肿。

  为了解决这个问题,vuex允许我们将存储划分为模块,每个模块都有自己的状态、变异、动作、getters等。

  在存储文件中创建新的模块文件夹。

  在模块中,您可以创建单个模块,一个模块处理一个模块的功能。

  Store/modules/user.js处理用户相关的函数。

  Store/modules/pay.js处理与支付相关的功能。

  Store/modules/cat.js处理与购物车相关的功能。

  //user.js模块

  //导出

  导出默认值{

  Namespace: true,//为每个模块添加一个前缀名,以确保模块名不冲突。

  状态:()={},

  突变:{},

  动作:{}

  }

  最后在store/index.js中介绍

  //store/索引. js

  从“vuex”导入{ createStore }

  从导入用户。/modules/user.js

  从导入用户。/modules/pay.js

  从导入用户。/modules/cat.js

  导出默认的createStore({

  模块:{

  用户,

  支付,

  猫

  }

  })

  模板中,module的写法和没有module差不多,只带module的名字。

  H2 { { $ store . state . user . count } }/H2

  Store.commit(user/sum ,num) //带模块名的参数

  store.dispatch(用户/总和_操作,总和)

  

总结

  关于Vuex在Vue3中的详细使用,本文就到这里了。更多关于Vuex在Vue3中使用的信息,请搜索我们之前的文章或者继续浏览下面的相关文章。希望大家以后能多多支持我们!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: