前端数据流之vuex

从前整理过vuex,这篇是补充

最简单的vuex



多个组件共享状态时的vuex


初始化

vue create vuex-pro
mannulbabel 其余不装
yarn serve启动项目

vuex基本使用

yarn add vuex
从前整理的文章,还是这些操作

mapstate

Bar.foo

import { mapState } from 'vuex'

getter

store中的计算属性

  • 基本用法
    准备数据

    getter中的方法,找到剩余未作的事件数量
getters: {
    remaining: state => {
      return state.todos.filter(item => item.done === false).length
    }
  }

引入

import {  mapGetters } from 'vuex'

使用

  • getter返回函数
    getter中的方法

    mapGetters中也要改,剩下具体用法

mutations

  • 一种推荐的写法



  • mutation要遵守vue的响应规则
    需要在对象添加新属性时
    Vue.set(obj, 'newProp', 123)
    或者
    state.obj = { ...state.obj, newProp: 123 }
  • 使用常量替代 Mutation 事件类型
    大型项目使用,人少了就不用
  • mapmutations
    可以使用mapmutations在组件中提交mutation,必须是同步的

action

可以包含异步操作

  • 基本使用

store.js

  actions: {
    increment( {commit}, {num = 1}) {
      setTimeout(() => {
        commit({
          type: 'increment',
          num
        })
      }, 1000);
    }
  }

视图层

<button @click="asyncIncre">异步增加</button>

方法

    asyncIncre () {
      this.$store.dispatch('increment', {
        num: 2
      })
    }
  • 其余
    mapActions可以取别名
    可以结合Promise使用
    可以结合asyncawait使用
    可以调用异步api以及分发多重mutations

Module

store分割成不同的模块。结合mobx里的store理解

即使写在模块里,action mutation getter也是全局的,除非加上namespaced: true,,调用的时候在视图层{{ $store.getters['foo/abc'] }}即可

购物车案例

vuex插件

自定义
内置logger
vuex-persistedstate -- 可以同步状态,刷新也不会丢失,类似于结合localStorage使用

严格模式

表单处理

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容