首页 > 其他分享 >Vue面试题41:如何监听vuex状态变化?(总结自B站up主‘前端杨村长’视频,仅供自用学习)

Vue面试题41:如何监听vuex状态变化?(总结自B站up主‘前端杨村长’视频,仅供自用学习)

时间:2022-10-27 15:37:10浏览次数:66  
标签:面试题 Vue watch up subscribe state mutation vuex store

  • vuex数据状态是响应式的,所以状态变视图跟着变,但是有时还是需要知道数据状态变了从而做一些事情,既然状态都是响应式的,那自然可以使用watch,另外vuex也提供了订阅的API:store.subscribe()

  • 思路

    • 总述知道的方法;
    • 分别阐述用法;
    • 选择和场景;
  • 回答范例

    • 我知道几种方法:
      • 可以通过watch选项或者watch方法监听状态;
      • 可以使用vuex提供的API:store.subscribe()
    • watch选项方式,可以以字符串形式监听$store.state.xx;subscribe方式,可以调用store.subscribe(cb),回调函数接收mutation对象和state对象,这样可以进一步判断mutation.type是否是期待的那个,从而进一步做后续处理;
    • 总的来说,watch方式简单好用,且能获取变化前后值,首选;subscribe方法会被所有commit行为触发,因此还需要判断mutation.type,用起来略繁琐,一般用于vuex插件中;
  • 具体使用

  • //Vue2
    watch: {
      "$store.state.test.count": {
        immediate: true,
        handler(val) {
          console.log(val)
        }
      }
    }
    //Vue3
    const store = useStore()
    
    watch(
      store.state,
      (val) => {
        console.log(val.count)
      },
      { immediate: true }
    )
    //store.subscribe
    mounted() {
      this.$store.subscribe((mutation, state) => {
        if (mutation.type == "test/INCREMENT") {
          console.log(state.test.count)
        }
      })
    }
    

标签:面试题,Vue,watch,up,subscribe,state,mutation,vuex,store
From: https://www.cnblogs.com/Mochenghualei/p/16832387.html

相关文章

  • Iup Radio Toggle Action Valuechanged_cb Focus
    IupRadioToggleActionValuechanged_cbFocusradio_toggle.VALUE='ON'、radio_group.VALUE=radio_toggle貌似等效。待测试radio_group.VALUE=radio_toggle后,是否rad......
  • vue源码分析-事件机制
    这个系列讲到这里,Vue基本核心的东西已经分析完,但是Vue之所以强大,离不开它提供给用户的一些实用功能,开发者可以更偏向于业务逻辑而非基本功能的实现。例如,在日常开发中,我们......
  • 【vue】打包后dist无法运行和显示问题
     执行npmrunbuild生成dist静态目录 打开index.html无法显示,是因为找不到目录,将里面的引用路径修改即可修改后可能部分图片无法正常显示,因为还有其它路径的需要切......
  • vue+mysql实现前端对接数据库
    下载引入相关依赖1、cnpminstall--savemysql2、cnpminstall--saveaxios3、cnpminstall--savebody-parser4、cnpminstall--saveexpress5、cnpminstall--......
  • commit提交代码时遇到如下提示错误:Error updating changes: mmap failed Invalid argu
      解决方式:  参考:https://www.cnblogs.com/-jn-blog/p/13719341.html......
  • vue之数据绑定
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><metahttp-......
  • Iup Label 加载图片
    IupLabel加载图片(Image)label.IMAGE=picture_path_gbkiup.SetAttribute(picture_ih,'IMAGE',picture_path_gbk)两者貌似等价。需用系统编码。当前系统编码为GBK,而......
  • [Java代码审计]javacon WriteUp
    文章目录​​写在前面​​​​javacon​​写在前面在P神星球看到的,这里学习一下,文件在​​https://www.leavesongs.com/media/attachment/2018/11/23/challenge-0.0.1-SNAPS......
  • vue设置元素高度自适应
    VUE设置元素高度自适应<divref="element":style="{height:`${elementHeight}px`}"></div>data(){return{elementHeight:50}},mounted:fun......
  • mysqlonduplicatekeyupdate失效
    mybatisonduplicatekeyupdate什么意思果您指定了onduplicateupdate,并且插入行后会导致在一个unique索引或primarykey中出现重复值,则执行旧行update。例如,如果列a被定义......