标签(空格分隔): vuevue
https://vuex.vuejs.org/zh-cn/git
https://github.com/itguide/vu...github
在/src/store/index.js 的mutations里面模拟异步发现状态是混乱的,页面改变了,而devtool工具里面的state状态不一致 以下面图片
vuex
/src/store/index.js 代码以下异步
import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) let store = new Vuex.Store({ state: { num: 100 }, mutations: { // 任什么时候候改变state的状态都经过提交 mutation 来改变 // 里面能够定义多个函数,当触发这个函数就会改变state状态 addIncrement(state, stark) { console.log(stark); // 接收一个state做为参数, 至关于上面的state // 模拟异步,状态会发生混乱 setTimeout(() => { state.num += stark.n; }, 1000) }, minIncrement(state) { state.num -= 5; } } }) export default store
代码以下ide
import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) let store = new Vuex.Store({ state: { num: 100 }, mutations: { // 任什么时候候改变state的状态都经过提交 mutation 来改变 // 里面能够定义多个函数,当触发这个函数就会改变state状态 addIncrement(state, stark) { console.log(stark); // 接收一个state做为参数, 至关于上面的state // 模拟异步,状态会发生混乱 // 页面的数据和这个里面的数据不一致, // 当咱们在这里请求接口的时候,会发生异步,会出现问题 // mutations设计原则是同步的 // setTimeout(() => { state.num += stark.n; // }, 1000) }, minIncrement(state) { state.num -= 5; } }, actions: { addAction(context) { // context 是一个对象 setTimeout(() => { context.commit('addIncrement', { n: 5 }) }, 1000) } } }) export default store
代码以下函数
<template> <div> <h2>加减法计算器</h2> <div> <input type="button" value="-" @click="minHandle"/> <span>{{num}}</span> <input type="button" value="+" @click="addHandle"/> </div> </div> </template> <script> export default { // data(){ // return { // // num:100 // num: this.$store.state.num, // } // }, computed:{ num(){ return this.$store.state.num } }, methods:{ addHandle(){ // this.num += 5; // 点击的时候须要改变状态,提交mutation addIncrement // 利用$store.commit 里面 写参数至关于 mutation的函数名字 // this.$store.commit("addIncrement",{name:'stark',age:18,n:5}) // this.$store.commit({ // type:"addIncrement", // n:5, // age:18, // name:'stark.wang' // }) this.$store.dispatch("addAction"); // 在这提交 actions }, minHandle(){ // this.num -= 5; this.$store.commit("minIncrement") // this.$store. } } } </script>