Vue-搭建Vuex开发环境

news/2024/10/23 7:39:27/

1 安装Vuex

安装之前需要了解一个版本问题,在vue2中,要用vuex的3版本,在vue3中,要用vuex的4版本,要严格遵循这个版本要求,不然就会出现各种意想不到的问题,例如下方安装报错,就算因为版本问题

安装的方式也有好几种,我这里采用的是npm安装

npm

npm install vuex@next --save

Yarn

yarn add vuex@next --save

我这里用的是vue2,所以就安装vuex的3版本,打开终端,输入:

vue_test>npm i vuex@3

2 使用Vuex

安装完成之后,就可以import和use了,这里Vuex的v大小写都可以,官网文档是大写的,非要小写也没错,只是一个命名的问题

// 引入Vuex
import Vuex from 'vuex'
// 使用Vuex
Vue.use(Vuex)

3 使用虚拟store

到了use完Vuex这一步后,然后创建vm或者vc的时候就可以传入store这个配置项了

这样就实现了让每一个vc实例都有一个store对象了,但是现在的store里面的值都是假的,所以现在要创建(封装)真实的store

4 创建store

想创建store有两种做法

第一种做法

可以在项目的src目录创建一个文件夹叫做vuex,然后在里面新建一个store.js,这样别人一看就知道用到了vuex技术,并且store在这里创建的,虽然这种方式清晰明了,但是不是官方推荐的

第二种做法

在项目的src目录创建一个叫store的文件夹,并且创建index.js,虽然没有体现vuex,但是在src里面看到store,就相当于看到了vuex,这种方式也是官网推荐的

这两种方式都行,但是官网推荐的是第二种做种,所以这里我采用的是第二种做法

5 暴露(导出)store

在index.js写入相关代码

// 该文件用于创建Vuex中最为核心的store// 引入Vuex
import Vuex from 'vuex'// 准备actions 用于相应组件中的动作
const actions={}
// 准备mutations 用于操作数据(state)
const mutations={}
// 准备state 用于存储数据
const state={}
// 创建并暴露(导出)store 
export default new Vuex.Store({// 准备store里面的三大元素 这里key和value重名,可以使用简写形式 比如:action,mutations,state 这里我不想采用简写形式actions:actions,mutations:mutations,state:state
})

6 引入并使用真实store

既然真实的store以及准备完了,我们就可以引入真实的store并且替换掉上面我们写的假的store了

这里store触发了简写形式,但是我没有省略,个人不习惯这种简写

这样一个真实的store就被创建配置完成并引用了,vc或者vm实例身上都有一个store对象了

7 解决脚手架解析import语句的问题

看似基本工作都做完了,但是查看浏览器报错了,看似是一个前后调用问题,实际上是一个脚手架解析import语句的问题

 [vuex] must call Vue.use(Vuex) before creating a store instance.

这时候我们可以换一种思路,把use写道index.js里面,让main.js只需要引入以及准备好的store

这时候再次查看store,发现错误消息并且每个vc或者vm都有一个真实的store

并且看到的dispatch和commit等相关api,这就意味着可以和vuex进行操作了

到这就完成了搭建Vuex的开发环境了,也就是意味着可以使用vuex了 代码如下:

index.js

// 该文件用于创建Vuex中最为核心的store// 引入Vue
import Vue from 'vue'
// 引入Vuex
import Vuex from 'vuex'
// 使用Vuex
Vue.use(Vuex)
// 准备actions 用于相应组件中的动作
const actions={}
// 准备mutations 用于操作数据(state)
const mutations={}
// 准备state 用于存储数据
const state={sum:0 //总和
}
// 创建并暴露(导出)store 
export default new Vuex.Store({// 准备store里面的三大元素 这里key和value重名,可以使用简写形式 比如:action,mutations,state 这里我不想采用简写形式actions:actions,mutations:mutations,state:state
})

main.js

// 引入Vue
import Vue from 'vue'
// 引入App
import App from './App.vue'
// 引入store
import store from './store/index'
// 关闭Vue的生产提示
Vue.config.productionTip=false
// 创建vm 
const vm=new Vue({el:'#app',render:h=>h(App),store:store,beforeCreate(){Vue.prototype.$bus=this}})

8 搭建vuex环境总结

1 创建文件:src/store/index.js

//引入Vue核心库
import Vue from 'vue'
//引入Vuex
import Vuex from 'vuex'
//应用Vuex插件
Vue.use(Vuex)//准备actions对象——响应组件中用户的动作
const actions = {}
//准备mutations对象——修改state中的数据
const mutations = {}
//准备state对象——保存具体的数据
const state = {}//创建并暴露store
export default new Vuex.Store({actions,mutations,state
})

2 在main.js中创建vm时传入store配置项

......
//引入store
import store from './store'
......//创建vm
new Vue({el:'#app',render: h => h(App),store
})

http://www.ppmy.cn/news/555548.html

相关文章

kafka面试题(一)

1 kafka的ACK机制 Kafka 的 ACK(Acknowledgement)机制是指生产者在将消息发送到 Kafka 集群时,需要等待来自 Broker 的确认响应,以确保消息已经成功写入 Kafka。 Kafka 的 ACK 有三种模式: acks0:不需要等…

全球首款搭载鸿蒙操作系统的设备是什么,全球首款搭载华为鸿蒙系统的智能空调首发上市!美的创造...

全球首款采用华为鸿蒙系统的智能空调来了!日前,美的空调正式对外宣布,首款搭载华为鸿蒙系统的智能空调中国尊鸿蒙艺术柜机,将于今年5月起上市销售,于今年空调旺季市场上掀起一轮全新的主动智能、新风无风感的智慧新体验…

美的:用创新助力国民品质提升

在国民对于舒适“家”需求日趋增加的窗口期,美的空调在电商策略及营销策略充分布局,推出中高端无风感系列产品,力求在空调使用场景中解决用户需求,满足用户对生活品质的提升的迫切期望。 针对用户对于空调的升级需求,美…

安卓平板修改和平精英90帧、120帧超广角,2k/4k分辨率(无需root!!!)

前言:今天我们将探讨如何在安卓平板上修改和平精英超广角以及高帧率画质效果。 1、首先,我们要知道平板改超广角的好处是什么?我们都知道平板相比于手机显示宽度是要更大的,如果平板再改个超广角效果,甚至连脚都可以看…

9招!解决空调总是报低压报警的问题

空调低压故障常见原因有: 1、空调制冷系统铜管管道过长。 2、空调室内机过滤网脏堵。 3、空调制冷系统中的干燥过滤器脏堵或者铜管管道油堵。 4、空调制冷系统中的低压保护器故障。 5、空调制冷系统中的电磁阀打不开。 6、空调制冷系统中的膨胀阀故障。 7、空调制冷…

【webpack】webpack探索

webpack是什么 构建工具 初始化 pnpm init -y生成一个package.json文件 为什么使用webpack 很难直观的去感受到你的某个文件依赖了哪些外部车或者其他组件如果一个依赖没有加上或者说顺序故错了,整个项目可能都步起来如果一个依赖已经装了但是没有用。试览器会…

Rust 原始类型之数组array内置方法

目录 数组 array 声明 访问 引用 Reference 切片 Slice 方法 题目实例 数组 array 在 Rust 中,数组是一种固定大小的数据结构,用于存储具有相同数据类型的元素的有序集合。 “固定大小”是指数组中的元素的类型和数量确定,也就确定了…

llt自发光_Luminox F-22猛禽战斗机9270飞行系列手表

Luminox 雷美诺时推出F-22猛禽战斗机9270 飞行系列手表.雷美诺时创立于1989年,首创Luminox Light Technology(LLT)光学技术,在不需电力及吸收外来光线的情况下能持续自我发光25年。于1993年,应美国海豹突击队(U.S. NAVY SEALs)需求设计出潜水…