当前位置: 首页 > news >正文

VUEX 基础语法

VUEX可以为项目添加一个数据仓库,当不同的组件需要获取或者设置数据时,都从这个仓库中获取。

这里直接记录的是VUEX模块式开发的语法。

目录结构:store文件保存VUEX的处理逻辑,这里设置了两个模块化仓库search和typenav,store下的index.js对外导出,并且内部会注册模块化仓库。

VUEX的注册

首先需要在js(本例中是store/index.js)中引入Vue和Vuex,并调用Vue.use(Vuex)

import Vue from 'vue'
import Vuex from 'vuex'Vue.use(Vuex);

该js应该对外暴露一个Vuex的实例,该实例通过Vuex.Store创建:

export default new Vuex.Store({...
})

在项目的入口js,一般是main.js中,引入这个index.js,并在Vue中注册:

...
import store from '@/store'
...new Vue({render: h => h(App),...store,...
}).$mount('#app')

注册后,在组件中,可以使用this.$store访问仓库。

然后介绍VUEX每个仓库中都需要具有的一些对象:

state

state对象保存仓库的数据。

const state={list : [],
};

mutations

mutations对象是唯一可以修改state数据的对象。

mutations对象中保存一些方法,每个方法的参数为(state, 其他参数)

const state={list : [],
};const mutations = {async getList(state){let tmpList = await reqcategoryList();state.list = tmpList.data;}
};

mutations对象中定义的方法,可以通过$store.commit(方法名)来触发。

    this.$store.commit('TypeNav/getList');

actions

actions可以用来触发commit。

actions接收接受一个与 store 实例具有相同方法和属性的 context 对象。

const state={list : [],
};const mutations = {async getList(state){let tmpList = await reqcategoryList();state.list = tmpList.data;},
};const action = {getListAction(context){context.commit('getList')},
}

actions方法通过this.$store.dispatch(方法名)来触发。

小仓库里的代码框架

TypeNav/index.js中的代码如下:

需要注意,因为项目中有多个小仓库,为了在commit时指定是哪个仓库中的mutations方法,在对外暴露的对象中,需要加一句namespaced:true。

import { reqcategoryList } from '@/api'
const state={list : [],
};const mutations = {async getList(state){let tmpList = await reqcategoryList();state.list = tmpList.data;}
};const action = {}export default{namespaced: true,state,mutations,action,
}

search/index.js代码框架是一模一样的:

const state={...
};const mutations = {...
};const action = {...
}export default{namespaced: true,state,mutations,action,
}

在store/index.js中通过import引入两个小仓库,再在Vuex.Store()中通过modules方法进行模块化:

import Vue from 'vue'
import Vuex from 'vuex'import search from './search'
import TypeNav from './TypeNav';Vue.use(Vuex);export default new Vuex.Store({modules:{search,TypeNav,},
})

组件中调用仓库

调用commit方法

commit方法使用this.$store.commit(仓库名/commit方法名)调用:

    this.$store.commit('TypeNav/getList');

读取state中的数据:

state中的数据使用this.$store.state.仓库名.数据名获取

    this.$store.state.TypeNav.list;

http://www.xdnf.cn/news/1133965.html

相关文章:

  • 如何解决WordPress数据库表损坏导致的错误
  • C语言 --- 函数递归
  • 蓝光三维扫描技术:汽车轮毂轴承模具检测的高效解决方案
  • Linux 驱动中 Timer / Tasklet / Workqueue 的作用与对比
  • socket和websocket的区别
  • LeafletJS 进阶:GeoJSON 与动态数据可视化
  • rocky8 --Elasticsearch+Logstash+Filebeat+Kibana部署【7.1.1版本】
  • 【开源.NET】一个 .NET 开源美观、灵活易用、功能强大的图表库
  • MAC 苹果版Adobe Photoshop 2019下载及保姆级安装教程!!
  • 信而泰×DeepSeek:AI推理引擎驱动网络智能诊断迈向 “自愈”时代
  • SupMotion 云迁移数据工具实现原理(上)
  • unity VR linerenderer的线会被UI盖住
  • 鸿蒙系统账号与签名内容整理
  • 网络安全初级(Python实现sql自动化布尔盲注)
  • 基于大数据电信诈骗行为分析与可视化预测系统的设计与实现【海量数据、多种机器学习对比、数据优化、过采样】
  • PDF 转 Word 支持加密的PDF文件转换 批量转换 编辑排版自由
  • 混合参数等效模型
  • 暑假---作业2
  • LLM指纹底层技术——注意力机制变体
  • Mybatis07-逆向工程
  • 【代码】基于CUDA优化的RANSAC实时激光雷达点云地面分割
  • 参数检验?非参数检验?
  • java工具类Hutool
  • 工业网络协议桥接设计指南:从LIN到CAN/RS-232的毫秒级互通方案
  • 推客系统开发:从零构建高并发社交平台的技术实践
  • 基于springboot+vue的酒店管理系统设计与实现
  • 事务~~~
  • 横向移动(下)
  • 关于redis各种类型在不同场景下的使用
  • 消息中间件(Kafka VS RocketMQ)