经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » JS/JS库/框架 » Vue.js » 查看文章
Vuex如何获取getter对象中的值(包括module中的getter)
来源:jb51  时间:2022/8/31 17:25:46  对本文有异议

Vuex获取getter对象中的值

getter取值与state取值具有相似性

1.直接从根实例获取

  1. // main.js中,把store注册在根实例下,可使用this.$stroe.getters直接取值
  2. computed: {
  3. ? testNum1() {
  4. ? ? return this.$store.getters.testNum1;
  5. ? }
  6. }

2.使用mapGetters取值

  1. import { mapGetters } from "vuex";
  2. export default {
  3. ? computed: {
  4. ? ? ...mapGetters({
  5. ? ? ? // 把 `this.getNum1` 映射为 `this.$store.getters.getNum1`
  6. ? ? ? getNum1: "getNum1"
  7. ? ? }),
  8. ? ? ...mapGetters([
  9. ? ? ? // 使用对象展开运算符将 getter 混入 computed 对象
  10. ? ? ? "getNum4"
  11. ? ? ])
  12. ? }
  13. };

3.使用module中的getter

module中的getter,又分为namespaced(命名空间)为true和false的情况。默认为false,则表示方位都是全局注册,与上边两种方法一致。

当为true时,则使用如下方法:

  1. import { mapGetters } from "vuex";
  2. export default {
  3. ? computed: {
  4. ? ? getNum1(a,b) {
  5. ? ? ? return this.$store.getters['moduleA/getNum1']
  6. ? ? },
  7. ? ? // 第一个参数是namespace命名空间,填上对应的module名称即可
  8. ? ? ...mapGetters("moduleA", {
  9. ? ? ? getNum2: "getNum2"
  10. ? ? }),
  11. ? ? ...mapGetters("moduleA", ["getNum3"])
  12. ? }
  13. };

计算属性获取的getter值需要刷新才能更新

描述

  1. // state
  2. state: {
  3. leader: null
  4. },
  5. // getters
  6. getters: {
  7. getLead: state => state.leader
  8. }
  9. // mutations
  10. mutations: {
  11. setLead (state, data) {
  12. state.leader = data
  13. }
  14. },
  15. // 页面中赋值
  16. // 登录时改变state.leader的值
  17. this.$store.commit('setLead', true)
  18. // 组件中计算属性监听
  19. import { mapGetters } from 'vuex'
  20. computed: {
  21. leader () {
  22. ...mapGetters(['getLead'])
  23. }
  24. }

打印this.leader,直接获取计算属性值

刷新之后的打印结果

解决

增加监听函数watch,修改计算属性

  1. computed: {
  2. ...mapGetters(['getLead'])
  3. //原来
  4. //leader () {
  5. // ...mapGetters(['getLead'])
  6. //}
  7. }
  8. watch: {
  9. // 监听getters数据 --- 'getLead'
  10. // 解决state数据可以更新,但getters数据需要刷新才能更新的问题
  11. getLead (val) {
  12. this.leader = val
  13. // this.leader是data中自定义的值,
  14. // 赋值之后,一定要重写之后的方法,
  15. // 不然只是取值,页面操作依然不会改变
  16. this.showVip() // 这是我页面上的方法名
  17. }
  18. },

以上为个人经验,希望能给大家一个参考,也希望大家多多支持w3xue。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号