store 常规使用方式

直接在 new Vuex.store 选项中去写,不太好,常规方式是

创建文件

创建 client/store/state/

创建 client/store/state/state.js

创建 client/store/mutations/

创建 client/store/state/mutations.js

分模块写

// state.js 数据
export default {count: 0
}
复制代码
// mutations.js 操作
export default {updateCount (state, num) {state.count = num}
}
复制代码

主入口引入

// store.js
import Vuex from 'vuex'import defaultState from './state/state'
import mutations from './mutations/mutations'export default () => {return new Vuex.Store({state: defaultState, // 这里因为有服务端渲染,渲染时,会有部分数据传到客户端,这是会有覆盖数据的操作,所以 defaultState 只是默认状态,不是真正的状态。mutations // es6特性,简写;操作都是相通的,不需要 default 标明})
}
复制代码

getters

getters 和 组件的 computed 类似,方便直接生成一些可以直接用的数据。当组装的数据要在多个页面使用时,就可以使用 getters 来做

创建文件夹及文件

创建 client/store/getters/

创建 client/store/state/getters.js

声明 getters

// getters.js
export default {fullName (state) {return `${state.firstName} ${state.lastName}`}
}
复制代码

引入 getters

// store.js
import Vuex from 'vuex'import defaultState from './state/state'
import mutations from './mutations/mutations'
import getters from './getters/getters' // 这里export default () => {return new Vuex.Store({state: defaultState, mutations, getters // 这里})
}
复制代码

使用 getters

// app.vue
<template><div id="app"><p>{{fullName}}</p></div>
</template><script>
export default {computed: {fullName () {return this.$store.getters.fullName}}
}
</script>
复制代码

简写帮助方法

babel 默认不支持 ... 解构语法的,未定稿的语法

安装 babel-preset-stage-1

npm i babel-preset-stage-1 -D

级别最高的一种。

// .babelrc
{"presets": ["env","stage-1" // 添加配置],"plugins": ["transform-vue-jsx","syntax-dynamic-import"]
}
复制代码

mapState 简写

// app.vue
<template><div id="app"><p>{{fullName}} {{count}}</p></div>
</template><script>
import {mapState// mapGetters
} from 'vuex'export default {computed: {...mapState(['count']), // 同名直接用数组fullName () {return this.$store.getters.fullName}}
}
</script>
复制代码

不同名的话,用对象

...mapState({counter: 'count'}),
复制代码

或者用函数

...mapState({counter: (state) => state.count}),
复制代码

mapGetters 简写

与 mapState 类似

...mapGetters(['fullName'])
复制代码

转载于:https://juejin.im/post/5b97334ff265da0ac726dbe2

Vuex之state和getters相关推荐

  1. 在vue组件中使用vuex的state状态对象的5种方式

    下面是store文件夹下的state.js和index.js内容 state.js //state.js const state = {headerBgOpacity:0,loginStatus:0, ...

  2. uniapp、vue,vuex中state改变,getters不动态改变的完美解决方案!

    uniapp.vue,vuex中state改变,getters不动态改变的完美解决方案! 参考文章: (1)uniapp.vue,vuex中state改变,getters不动态改变的完美解决方案! ( ...

  3. Vuex中state,getters,mutations的使用方法以及辅助函数的原理

    Vuex是是一个程序里面的状态管理模式,它是集中式存储所有组件的状态的小仓库,并且保持我们存储的状态以一种可以预测的方式发生变化. state中存放的是全局变量,定义如下 state: {//存放全局 ...

  4. vuex刷新state数据丢失问题

    用vuex来做全局的状态管理时, 发现当刷新网页后,保存在vuex实例store里的数据会丢失. 1. 产生原因 其实很简单,因为store里的数据是保存在运行内存中的,当页面刷新时,页面会重新加载v ...

  5. vue3中修改vuex中state中的数据

    vue3中修改vuex中state中的数据 1.直接通过store.state修改 如 : //vuex文件 import { createStore } from 'vuex' export def ...

  6. vue vuex的state,getter,mustation,action,module

    Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化. Vuex核心属性: vuex中给出了几个核 ...

  7. vue报错:Error: [vuex] Do not mutate vuex store state outside mutation handlers.

    报错原理解读 Error: [vuex] Do not mutate vuex store state outside mutation handlers. 该报错从文本意思理解还是很清晰的,不要在m ...

  8. Do not mutate vuex store state outside mutation handlers.

    组件代码: selectItem(item,index) {this.selectPlay({list: this.songs,index}) }, ...mapActions(['selectPla ...

  9. 棘手的问题input:当在严格模式中使用 Vuex 时,在属于 Vuex 的 state 上使用 v-model,input

    棘手的问题input:当在严格模式中使用 Vuex 时,在属于 Vuex 的 state 上使用 v-model,input 用"Vuex 的思维"去解决这个问题的方法是:给 &l ...

  10. uniapp中利用监视vuex中state数据配合uview实现登录消息提示

    先看效果图 登录成功或者退出成功都能够给用户提示,提示用户体验! uview的顶部消息提示详情可见u-top-tips 设计思路 首先是页面的布局 是将顶部消息提示写在了个人详情页内 <u-to ...

最新文章

  1. 刻意练习:Python基础 -- Task12. 模块
  2. 从RBM(受限玻尔兹曼机)开始、到深度信念网络(DBN)再到自动编码器(AE)
  3. wifi 7都来了?
  4. 【热点报道】2013eoe移动开发者大会圆满落幕
  5. canvas入门实战--邀请卡生成与下载
  6. $ajax不能识别,JQuery/JS Ajax功能无法识别
  7. 【李宏毅2020 ML/DL】P51 Network Compression - Knowledge Distillation | 知识蒸馏两大流派
  8. 春天的事务管理,图解事务传播行为
  9. 《DB 查询分析器》使用技巧之(七)
  10. android 开机自启动实现
  11. java移位操作示例
  12. 手机直播app制作大揭秘之视频直播系统方案
  13. java中随机抽取三人名字_JS实现随机抽取三人
  14. 正则表达式汇总--小鱼儿
  15. python实现数据爬取——糗事百科爬虫项目
  16. 基于Modbus RTU 485通信协议实现对PH、溶解氧传感器的数据采集
  17. 2022年中国春节档电影观影人次、票房收入及票价走势分析[图]
  18. Jquery基本教程(背还是要背的)
  19. 文件服务器上传文件流程,上传文件到服务器流程
  20. 计算机it教程软件,电子白板简易教程_计算机软件及应用_IT计算机_专业资料

热门文章

  1. CDH秘籍(两):cloudera Manager存储监控数据
  2. SQL SERVER 2005无法远程连接
  3. 巧用Automator,实现一个鼠标右键转化图像格式的功能
  4. SSH Config Editor Mac(SSH配置编辑器)V2.2
  5. macOS Monterey新功能:抹掉所有内容和设置
  6. 苹果Mac上如何使用预览反转图片?
  7. 【Flutter】基础组件【05】Icon
  8. docker下的Mysql镜像的使用方法
  9. Netty NioEventLoop 启动过程源码分析
  10. PyInstaller打包成exe可执行文件