小白学习vuejs-22

100 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第22天,点击查看活动详情

自学前端

  • 前文
    • 本文是我自学vue的一些知识以及个人理解, 希望帮助到一些想要学习前端的小白朋友
    • 介绍本次学习的是vuex相关知识
    • 这是基于我学习的笔记而来的文章
    • backend: 后端 frontend: 前端

Mutation常量类型-概念

  • 我们来考虑下面的问题
    • 在mutation中, 我们定义了很多事件类型(也就是其中的方法名称)
    • 当我们的项目增大时, Vuex管理的状态越来越多, 需要更新状态的情况越来越多, 那么意味着Mutation中的方法越来越多
    • 方法过多, 使用者需要花费大量的经历去记住这些方法, 甚至是多个文件间来回切换, 查看方法名称, 甚至如果不是复制的时候, 可能还会出现写错的情况
    • mutation5png.png

Mutation同步函数

  • 通常情况下, Vuex要求我们Mutation中的方法必须是同步方法
    • 主要原因是当我们使用devtools时, 可以devtools可以帮助我们捕捉mutation的快照
    • 但是如果是异步操作, 那么devtools将不能很好的追踪这个操作什么时候会被完成
  • 比如我们之前的代码, 当执行更新时, devtools中会有如下信息:
  • mutation6.png
  • mutation7.png
  • 你会发现state中的info数据一直没有被改变, 因为它无法追踪到
  • so, 通常情况下, 不要再mutation中进行异步的操作

Action的基本定义

  • 我们强调, 不要在Mutation中进行异步操作,比如网络请求, 必然是异步的, 这个时候怎么处理呢?
  • Action类似于Mutation, 但是用来代替Mutation进行异步操作的

认识Module

  • Module是模块的意思, 为什么在Vuex中我们要使用模块呢?

    • Vue使用单一状态树, 那么意味着很多状态都会叫给Vuex来管理
    • 当应用宾得非常复杂时, store对象就有可能变得相当臃肿
    • 为了解决这个问题, Vuex允许我们将store分割成模块(Modele), 而每个模块都拥有自己的state, mutations,action,getters等
  • 我们按照什么样的方式来组织模块呢?

    • 我们来看下边的代码
    • module.png Module局部状态
  • 上面的代码中, 我们已经有了整体的组织结构, 下面我们来看看具体的局部模块中的代码如何书写

    • 我们在moduleA中添加state, mutation, getters
    • mutaion和getters接收的第一个参数是局部状态对象

module2.png

  • 注意:
    • 虽然, 我们的doubleCount和increment都是定义在对象内部的
    • 但是在调用的时候, 依然是通过this.$store来直接调用的

后记

  • 希望对对前端有兴趣的朋友们有帮助
  • 这篇文章主要是关于vuex的, 希望大家喜欢
  • vue的作者是中国人尤雨溪, 非常厉害的人