(精华)2020年7月19日 vue vuex的使用和vuex辅助函数的使用
发布日期:2021-06-29 15:08:02
浏览次数:3
分类:技术文章
本文共 5742 字,大约阅读时间需要 19 分钟。
vuex的基本使用
store.jsimport Vue from 'vue';import Vuex from 'vuex';Vue.use(Vuex);//定义属性var state = { count:6, country:'中国'};//定义gettersvar getters = { count(state){ return state.count }, isEvenOrOdd(state){ return state.count%2==0?'偶数':'基数'; }}//定义mutation,处理状态(数据)的改变var mutations = { increment(state,payload){ debugger state.count = state.count + payload.data }, incrementAsync(state,payload){ //异步操作 var p=new Promise((resolve,reject) => { setTimeout(() => { resolve(); },3000); }); p.then(() => { state.count = state.count + payload.data }).catch(() => { console.log('异步操作'); }); }}//定义actions,要执行的操作,如流程判断、异步请求等var actions = { // increment(context,payload){ // context.commit('increment',payload) // }, increment({ commit},payload){ debugger commit('increment',payload) }, incrementAsync({ commit,state},payload){ //异步操作 var p=new Promise((resolve,reject) => { setTimeout(() => { resolve(); },3000); }); p.then(() => { commit('increment',payload); }).catch(() => { console.log('异步操作'); }); }}//创建store对象var store = new Vuex.Store({ state, getters, mutations, actions})//导出store对象export default store;
main.js挂载store.js
import Vue from 'vue'import App from './App.vue'import Vuestore from './store.js'new Vue({ el: '#app', //会自动将store对象注入到所有的子组件中 // 在子组件中通过this.$store访问该store对象 store:Vuestore, render: h => h(App)})
在vue组件中使用
{ { msg }}
获取store仓库中的所有数据state
{ { $store.state.count}}通过计算属性获取
{ { getCount}}通过计算属性获取是否基偶数
{ { isEvenOrOdd}}通过store里的getters
{ { $store.getters.isEvenOrOdd}}
vuex的辅助函数的使用
首先上store.jsimport Vue from 'vue'import Vuex from 'vuex'Vue.use(Vuex);//定义属性(数据)var state = { count: 16, todolist: [{ id: 1, task: '读书', finished: true }, { id: 2, task: '写字', finished: false } ]}//定义gettersvar getters = { getCount(state) { return state.count; }, isEvenOrOdd(state) { return state.count % 2 == 0 ? '偶数' : '奇数'; }, getFinished(state) { return state.todolist.filter((item) => { return item.finished }) }, getUnFinished(state) { return state.todolist.filter((item) => { return !item.finished }) },}//定义actions,要执行的操作,如流程判断、异步请求等const actions = { // increment(context,payload){//包含:commit、dispatch、state // console.log(context); // context.commit('increment',payload) // }, increment({ commit }, payload) { commit('increment', payload) }, decrement({ commit, state }, payload) { if (state.count > 10) { commit('decrement', payload); } }, incrementAsync({ commit, state }, payload) { //异步操作 var p = new Promise((resolve, reject) => { setTimeout(() => { resolve(); }, 3000); }); p.then(() => { commit('increment', payload); }).catch(() => { console.log('异步操作'); }); }, todosUpdate({ commit }, payload) { var p = new Promise((resolve, reject) => { setTimeout(() => { resolve(); }, 3000); }); p.then(() => { commit('todosUpdate', payload); // state.todolist.push(payload); }) }}//定义mutations,处理状态(数据)的改变const mutations = { // 没有参数的情况 // increment(state){ // state.count++; // }, // 有参数的情况 increment(state, payload) { state.count += payload.data; }, decrement(state, payload) { state.count -= payload.data; }, todosUpdate(state, payload) { state.todolist.push(payload); // 异步情况, 不方便调试 // var p=new Promise((resolve,reject) => { // setTimeout(() => { // resolve(); // },3000); // }); // p.then(()=>{ // state.todolist.push(payload); // }) }}//创建store对象const store = new Vuex.Store({ state, getters, actions, mutations})//导出store对象export default store;
main.js
import Vue from 'vue'import App from './App.vue'import router from './router'import store from './store'Vue.config.productionTip = falsenew Vue({ router, store, render: h => h(App)}).$mount('#app')
mapstate辅助的使用
直接通过state 获取 { { this.$store.state.count}}todolist: { { todolist}}
- count: { { count}}
mapgetter使用
通过本页面的计算属性:
- { { item.task}}
通过在store中配置getters后获取:
- { { item.task}}
通过辅助函数mapGetters获取 getUnFinished:
- { { item.task}}
通过辅助函数mapGetters获取 todosALise
{ { todosALise}}
mapmutation的使用
改变count
count的值: { { $store.state.count}}
- { { item.task}} 任务状态:{ { item.finished?'已完成':'未完成'}}
mapaction的使用
{ { $store.state.test03.count}}{ { $store.state.test03.todolist}}
转载地址:https://codeboy.blog.csdn.net/article/details/107440465 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月06日 09时01分06秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
亿级流量搜索前端,是怎么做架构升级的?
2019-04-29
字节二面,让写一个LFU缓存策略算法,懵了
2019-04-29
干掉前端!3分钟纯 Java 注解搭个管理系统,我直接好家伙
2019-04-29
真正毁掉一个人的,是“打工者心态”
2019-04-29
喜马拉雅自研网关架构实践
2019-04-29
架构设计的真谛:系统与子系统、模块与组件、框架与架构
2019-04-29
因为一次 Kafka 宕机,终于搞透了 Kafka 高可用原理!
2019-04-29
大厂为什么都很重视 API 网关?聊聊 API 网关的作用
2019-04-29
低代码、无代码?深度解读硅谷新趋势(上)
2019-04-29
淘宝二面,面试官居然把TCP三次握手问的这么详细
2019-04-29
百度直播消息服务架构实践
2019-04-29
工作四年,分享50个让你代码更好的小建议
2019-04-29
颠覆认知——Redis会遇到的15个「坑」,你踩过几个?
2019-04-29
清华大学硕士程序员,纠结选开发还是转算法,烦死了!
2019-04-29
一文读懂Spring中的AOP机制
2019-04-29
快手EB级HDFS挑战与实践
2019-04-29
数据库跟缓存的双写一致性
2019-04-29
华为笔记本写代码真爽,包邮送一台!
2019-04-29
按下电源后的几秒钟,CPU在干嘛?
2019-04-29
雷军这个程序员!真的牛逼!
2019-04-29