vuex六种方法使用及场景

本文介绍了Vuex这一专为Vue.js应用程序开发的状态管理模式,详细阐述了其六种方法,包括state、mutations、actions、getters、modules和plugin的使用方法及场景,如state可在元素、生命周期或事件方法中使用,modules能提高代码维护性等。
  • Vuex 是什么?
    Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。
  • vuex的六种方法

state的使用方法及场景

方法作用
state存放公共数据
  • state的使用场景及方法
  • 第一种方法:在元素中使用
	<p>{{$store.state.name}}</p>
  • 第二种:在声明周期或者事件方法中使用
	this.$store.state.name
  • 简化版
	<p>{{name}}</p>
	<script>
	import { mapState } from 'vuex'
	export default {
		computed: {
	        ...mapState([
	            'name',
	        ]),
	    },
	</script>

mutations 的使用方法及场景

方法作用
mutationsvuex改变vuex的唯一途径,事件方法
  • 需要先在vuex的methods中传递事件,然后在vuex中接收事件使用,这种触发函数并携带参数的方法叫做载荷。
  • 传递方法给vuex
	// 将事件传递到vuex中
	this.$store.commit('changeTel', 110)
  • vuex接收事件
  • mutations接收的事件有一个固定形参state,他代表state方法,第二个参数是传递过来的数据
	// 接收vue传递的事件
	mutations: {
        changeTel(state, val) {
            console.log(val)
        },
    },
  • 简化版
	<script>
	import { mapMutations } from 'vuex'
	export default {
		methods:{
	        ...mapMutations([
	            'changeTel',
	        ]),
	        exitUser() {
            	this.changeTel({tel: 110, age: 18})
        	},
	    }
	</script>

actions 的使用方法及场景

方法作用
actions异步操作,异步方法处理数据
  • vuex中使用actions的方法
	actions: {
        changeAsync() {
            return new Promise((resolve) => {
                setTimeout(() => {
                    var list = [{
                        name: "商品一",
                        price: 100
                    },
                    {
                        name: "商品二",
                        price: 1200
                    }]
                    resolve(list)
                }, 1000);
            })
        }
    },
  • vue中使用异步操作的方法
	created() {
        this.$store.dispatch('changeAsync', '123').then(res => {
           this.changeShopList(res)
        })
    },
  • 简化版
	<script>
	import { mapActions } from 'vuex'
	export default {
	    created() {
	        this.changeAsync().then(res => {
	             this.changeShopList(res)
	        })
	    },
		methods:{
	        ...mapActions([
	            'changeAsync',
	        ]),
	    },
	</script>

getters 的使用方法及场景

方法作用
getters计算属性,相当于vue中的computed属性 只不过 getters是用于vuex的计算属性
  • vuex中使用getters的方法
	getters: {
        // getter方法会接收一个参数state其实就是 store中的state方法
        changeAge(state) {
            state.name++
            return state.name
        }
    },
  • vue使用方法
	<p>{{changeDate1}}</p>
	<script>
	import { mapGetters } from 'vuex'
	export default {
	    computed: {
	        ...mapGetters([
	            'changeDate1'
	        ])
	    },
	</script>

modules 的使用方法及场景

方法作用
modules导入其他模块的数据的方法
  • 其他模块相当于一个另一个vuex,可以将庞大的数据,分类封装成单独模块,然后引入到一个模块,提高代码的维护性
  • 封装模块的例子
  •   	const moduleA = {
      	    state: {
      	        data: 'moduleA',
      	        data1: true
      	    },
      	    getters: {
      	        changeDate1() {
      	            return '你是个麻瓜'
      	        }
      	    },
      	    mutations: {},
      	    actions: {}
      	}
      	export default moduleA
    
- 将封装好的模块引入
```javascript
	modules: {
        moduleA
    },
  • vue中使用,使用方法和不引入的使用方法一致
	<p>{{changeDate1}}</p>
	<p>{{moduleA.data}}</p>
	<script>
	import { mapState } from 'vuex'
	export default {
		computed: {
	        ...mapState([
	            'moduleA'
	        ]),
	        ...mapGetters([
	            'changeDate1'
	        ])
	    },
	</script>

plugin 的使用方法及场景

方法作用
plugin插件管理
  • 安装插件前电脑上需要有yarn或者npm或cnpm
  • 安装插件
	// 第一种安装方式
	yarn add vuex-persistedstate --save
	// 第二种安装方式
	npm i vuex-persistedstate --save
	cnpm i vuex-persistedstate --save
  • 在vuex中引入插件
	import createPersisted from 'vuex-persistedstate'
  • 使用插件
	plugins: [
           createPersisted()
    ]

注:vuex-persistedstate此插件是vuex的数据持久化,可以设置其存储个别数据,具体使用方法到npm官网查看https://www.npmjs.com/,进去直接搜索vuex-persistedstate查看

### 回答1: Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式,它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。Vuex 可以用于大型单页应用,用来更好地管理应用的状态。 ### 回答2: Vuex是一个用于Vue.js应用程序的状态管理模式。它在以下场景使用: 1. 大型应用程序:当应用程序变得庞大且复杂时,组件之间的状态管理变得困难。Vuex通过在一个中央存储中管理应用程序的状态,简化了状态管理过程,并提供了一种响应式的方法来跟踪和更新状态。这使得开发人员可以更轻松地管理复杂的应用程序状态。 2. 组件共享状态:在某些情况下,应用程序的多个组件可能需要共享相同的状态,例如用户登录信息、购物车内容等。Vuex提供了一个集中式的存储库,允许不同组件访问和更新相同的状态。这避免了在组件之间传递属性或事件来实现状态共享的复杂性。 3. 状态的持久化:在某些情况下,应用程序的状态可能需要在页面刷新或重新加载后保持不变。Vuex可以将状态持久化到本地存储或cookie中,并在应用程序重新加载后恢复状态。这对于需要保持用户相关信息或应用程序设置的应用程序非常有用。 4. 异步操作管理:当应用程序需要进行异步操作,如网络请求或延迟任务时,Vuex提供了一种结构化的方法来管理这些操作。Vuex将异步操作放在称为"actions"的函数中,并提供了追踪和更新异步操作状态的机制。这使得开发人员可以更容易地管理和追踪应用程序中的异步操作。 总之,Vuex在需要状态集中管理和组件共享状态的大型应用程序中非常有用,特别是在需要持久化状态和管理异步操作时。 ### 回答3: Vuex主要用于管理Vue.js应用程序的状态。以下是在何种场景使用Vuex的一些常见情况: 1. 大型应用程序:当应用程序变得庞大且复杂时,数据的传递和管理变得困难。Vuex可以帮助解决这个问题,通过集中管理应用程序的状态,简化数据流并提高开发效率。 2. 多个组件共享状态:当多个组件需要共享相同的数据时,可以使用Vuex来存储和管理该数据。这样,不同的组件可以直接访问和修改共享数据,而无需通过繁琐的传递和回调。 3. 异步操作:当需要处理异步操作时,Vuex提供了方便的解决方案。通过使用Vuex的actions来触发异步操作,然后通过mutations来修改状态。这种机制简化了异步操作的处理流程。 4. 插件和工具:Vuex提供了许多插件和工具,可以用于开发和调试应用程序。例如,可以使用Vuex的devtools插件对应用程序状态进行时间旅行式的调试。 总之,当你需要管理和共享应用程序的状态,并且希望简化代码和提高开发效率时,使用Vuex是一个不错的选择。使用Vuex可以提供一种清晰的数据流,使得代码更加模块化和可维护。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值