Vue学习笔记 —— 第一章Vuex状态管理模式的State基础使用

Vue学习笔记 —— 第一章Vuex状态管理模式的State基础使用

前言

好久没写Vue项目了,刚好最近学习Vue中学到了Vuex的内容,今天带着大家来学习一下Vuex的State基础使用把!

Vuex

Vuex按官网原文介绍

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式 + 库。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。

我个人概括下来就是:
帮助我们开发Vue应用中对于一些没有父子组件关系的组件 可以使用Vuex进行参数管理 从而让每个Vue项目不局限于父子组件,增加了组件的灵活性!

项目示例

我们本章教学,我们先搭建基础环境,之后在创建4个测试用例文件作为代码讲解

基础搭建

我这里使用了Vue-Router 路由用于更快分类,感兴趣的同学可以去了解一下 !非必须

main.js

import Vue from 'vue'
import App from './App.vue'

// 导入VueX
// import Vuex from "vuex"

// Vue.use(Vuex)
import VueRouter from "vue-router"
// 声明 component
import CsdnTest from "./components/CsdnVuexTest.vue"
import CsdnTest2 from "./components/CsdnVuex2.vue"
import CsdnTest3 from "./components/CsdnVuex3.vue"
import CsdnTest4 from "./components/CsdnVuex4.vue"
Vue.use(VueRouter)
// 定义路由
let router = new VueRouter({
	routes: [
		{
			path: "/csdnTest",
			name: "csdnTest",
			component: CsdnTest
		},
		{
			path: "/csdnTest2",
			name: "csdnTest2",
			component: CsdnTest2
		},
		{
			path: "/csdnTest3",
			name: "csdnTest3",
			component: CsdnTest3
		},
		{
			path: "/csdnTest4",
			name: "csdnTest4",
			component: CsdnTest4
		}
	]
});

// 导入store.js
import store from '../public/js/store.js'

Vue.config.productionTip = false

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

App.vue

<template>
  <div id="app">
    <img alt="Vue logo" src="./assets/logo.png">
	<!-- 路由模块 -->
	<div class="content">
		<!-- 定义路由 -->
		<router-link to="/csdnTest">CsdnTest</router-link>
		<router-link to="/csdnTest2">CsdnTest2</router-link>
		<router-link to="/csdnTest3">CsdnTest3</router-link>
		<router-link to="/csdnTest4">CsdnTest4</router-link>
		<router-view></router-view>
 	</div>
  </div>
</template>

<script>
export default {
  name: 'app',
}
</script>

<style>
#app {
  font-family: 'Avenir', Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>

创建一个store.js文件

// store JS
import Vue from 'vue'

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

const state = {
	// 数量
	count: 1,
	username: "Administrator",
	password: "root"
}

// 定义初始化vuex
export default new Vuex.Store({
	state
})

CSDNTest

通过 this.$store.state.属性进行获取state数据

<template>
	<!-- csdn测试用例 -->
	<div class="content">
		<h1>CSDN测试用例使用Vue </h1>
		<!-- 控制区 -->
		<div class="main_controller">
			<h2>控制区</h2>
			<button @click="setCount()">设置count</button>
			<button @click="setPassword()">设置密码</button>
			<button @click="setUserName()">设置用户名</button>
		</div>
		<!-- 显示区 -->
		<div class="main_showData">
			<p v-text="getCount"></p>
			<p v-text="getUserName"></p>
			<p v-text="getPassword"></p>
		</div>
	</div>
</template>

<script>
	export default {
		name: "CsdnTest",
		data(){
			return{
				count: 0, 
				username: "用户名",
				password: "密码"
			}
		},
		computed:{
			// 获取count
			getCount : function(){
				return this.$store.state.count;
			},
			
			// 获取用户名
			getUserName : function(){
				return this.$store.state.username;
			},
			
			// 获取密码
			getPassword : function(){
				return this.$store.state.password;
			}
		},
		methods:{
			// 设置count
			setCount : function(){
				// 设置数量
				this.$store.state.count = this.count;
			},
			// 设置用户名
			setUserName : function(){
				// 设置数量
				this.$store.state.username = this.username;
			},
			
			// 设置密码
			setPassword : function(){
				// 设置数量
				this.$store.state.password = this.password;
			}
		}
		
	}
</script>

<style>
</style>

CSDNTest2

通过 mapState 语法糖更优雅的方式完成!

<template>
	<!-- csdn测试用例 -->
	<div class="content">
		<h1>CSDN测试用例使用Vue </h1>
		<!-- 显示区 -->
		<div class="main_showData">
			<p v-text="demo"></p>
			<p v-text="countValue"></p>
			<p v-text="userNameValue"></p>
			<p v-text="passwordValue"></p>
		</div>
	</div>
</template>

<script>
	// 设置vuex
	import {mapState} from "vuex"
	
	export default {
		name: "CsdnTest2",
		data(){
			return{
				count: 0, 
				username: "用户名",
				password: "密码"
			}
		},
		computed: mapState({
			// 创建一个计算属性 参数为state中的msg
			demo: "msg",
			countValue: (state) => state.count,
			userNameValue: (state) => state.username,
			passwordValue: (state) => state.password
		})
		
	}
</script>

<style>
</style>

CSDNTest3

通过 mapState 语法糖更优雅的方式完成!

<template>
	<!-- csdn测试用例 -->
	<div class="content">
		<h1>CSDN测试用例使用Vue </h1>
		<!-- 显示区 -->
		<div class="main_showData">
			<p v-text="demo"></p>
			<p v-text="countValue"></p>
			<p v-text="userNameValue"></p>
			<p v-text="passwordValue"></p>
		</div>
	</div>
</template>

<script>
	// 设置vuex
	import {mapState} from "vuex"
	
	export default {
		name: "CsdnTest3",
		data(){
			return{
				count: 0, 
				username: "用户名",
				password: "密码",
				demo: "项目示例"
			}
		},
		// 使用对象拓展运算符 可以保留原组件的计算属性,同时存在于vuex的state数据
		computed: {
			getDemo: function(){
				return this.demo;
			},
			...mapState({
				countValue: (state) => state.count,
				userNameValue: (state) => state.username,
				passwordValue: (state) => state.password
			})
		}
		
	}
</script>

<style>
</style>

CSDNTest4

通过 mapState 语法糖更优雅的方式完成!

<template>
	<!-- csdn测试用例 -->
	<div class="content">
		<h1>CSDN测试用例使用Vue </h1>
		<!-- 显示区 -->
		<div class="main_showData">
			<p v-text="count"></p>
			<p v-text="username"></p>
			<p v-text="password"></p>
		</div>
	</div>
</template>

<script>
	// 设置vuex
	import {mapState} from "vuex"
	
	export default {
		name: "CsdnTest4",
		data(){
			return{
				
			}
		},
		// 使用对象拓展运算符 可以保留原组件的计算属性,同时存在于vuex的state数据
		computed: mapState(['count','password','username'])
	}
</script>

<style>
</style>

结束语

今天我们讲解了一下Vue学习笔记 —— 第一章Vuex状态管理模式的State基础使用

  • 如果对你有帮助的话可以给我点赞收藏,十分感谢
  • 致力做学习笔记分享给大家
  • 可以转载 需标明 出处 本文链接。
  • 笔者一个开源项目:餐饮管理系统 希望大家可以点一下star

感谢你的观看。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值