vue 求和案例(使用vuex解决)

 要点:

案例注意点vuex的引入是在store.index.js中

然后就是对于没有逻辑的方法,就可以直接再组件方法调用commit去直接连接mutations:this.$state.commit('大写方法名',数据)

对那些需要逻辑判断定时器,需要发送ajax请求的都需要在组件方法调用dispatch去连接actions在actions里面进行逻辑的判断和ajax请求的发送,:this.$state.dispatch('驼峰命名方法',数据)

main.js

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

Vue.config.productionTip = false

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

store.index.js

//引入Vue核心库
import Vue from 'vue'
//引入 Vuex
import Vuex from 'vuex'
//应用vuex插件
Vue.use(Vuex)
//准备actions对象---响应组件中用户的动作
const actions = {
  conditionSum (context, value) {
    if (context.state.sum % 2 == 1) {
      context.commit('CONDITIONSUM', value)
    }
  },
  waitSum (context, value) {
    setTimeout(() => {
      context.commit('WAITSUM', value)
    }, 1000);
  }
}
//准备mutation对象---修改state中的数据
const mutations = {
  ADDSUM (state, value) {
    state.sum += value
  },
  SUBTRACTSUM (state, value) {
    state.sum -= value
  },
  CONDITIONSUM (state, value) {
    state.sum += value
  },
  WAITSUM (state, value) {
    state.sum += value
  }
}
//准备state对象---保存具体的数据
const state = {
  sum: 0
}
//创建并暴露store
export default new Vuex.Store({
  actions,
  mutations,
  state
})

Count.vue

<template>
  <div>
    <h1>加减求和的值为{{ $store.state.sum }}</h1>
    <select v-model="number">
      <option :value="1">1</option>
      <option :value="2">2</option>
      <option :value="3">3</option>
    </select>
    <button @click="addSum">+</button>
    <button @click="subtractSum">-</button>
    <button @click="conditionSum">和为奇数才能求和</button>
    <button @click="waitSum">等一秒才进行求和</button>
  </div>
</template>

<script>
export default {
  name: "Count",
  data() {
    return {
      number: 1,
    };
  },
  methods: {
    addSum() {
      this.$store.commit("ADDSUM", this.number);
    },
    subtractSum() {
      this.$store.commit("SUBTRACTSUM", this.number);
    },
    conditionSum() {
      this.$store.dispatch("conditionSum", this.number);
    },
    waitSum() {
      this.$store.dispatch("waitSum", this.number);
    },
  },
};
</script>

<style scoped>
button {
  margin-left: 5px;
}
</style>

直接运行当然报错,因为还要去index.js上进行定义actions

 

 输出两个参数

发现b就是我们要加得值,就是组件中得this.n

 

 而a就是我们希望的一个迷你版的store里面有我们想用的api

然后我们试试调用下commit

 

 发现这样写报错,因为mutation里面也要有jia这个方法

 然后我们写入mutation,注意一般把把mutation里面的方法写成大写好区分

然后输出a,b

 发现a就是我们的state,而b就是actions传过来的value

而且这个state相当于一个对象还有着getset 数据的监听

 

然后就是组件里去读取到这个state

发现是在this.$store.state.sum

 

模板上不需要写this

 

 

实现减

store.index.js

 

组件

 

然后实现奇数相加和等一等再加 

 判断是写在组件里的

 把判断写在store.index.js里面的actions里面

​​​注意在mutation里面千万不要写任何的逻辑,也不要发送Ajax请求,定时器也不要写,这些全写在actions里面

 

然后会发现

这边actions的加减貌似没什么作用没有什么逻辑判断,没有存在的意义

 然后注掉之后

之前说过可以在组件中直接调commit去联系mutation

然后因为调用dispatch是去联系actions,而调用commit是去联系mutations所以这边方法名要大写

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 3中使用Vuex,你需要按照以下步骤进行设置: 1. 安装Vuex:在终端中运行以下命令安装Vuex: ``` npm install vuex@next ``` 2. 创建一个Vuex store:在你的项目中创建一个新的文件(例如store.js),并导入`createStore`函数和你的模块文件(如果有的话): ```javascript import { createStore } from 'vuex'; import moduleA from './moduleA'; export default createStore({ modules: { moduleA } }); ``` 3. 创建模块(可选):如果你的应用程序需要使用模块来组织状态,你可以创建一个或多个模块文件。在上面的示例中,我们导入了一个名为moduleA的模块。 4. 在Vue应用程序中使用Vuex:在你的main.js文件中导入创建的store,并将其与Vue应用程序实例关联: ```javascript import { createApp } from 'vue'; import App from './App.vue'; import store from './store'; const app = createApp(App); app.use(store); app.mount('#app'); ``` 现在,你可以在你的Vue组件中使用Vuex的功能,包括状态管理、mutations、actions和getters等。 例如,在组件中访问和修改状态: ```javascript import { useStore } from 'vuex'; export default { setup() { const store = useStore(); // 访问状态 const count = computed(() => store.state.moduleA.count); // 修改状态 const increment = () => { store.commit('moduleA/increment'); }; return { count, increment }; } }; ``` 这就是在Vue 3中使用Vuex的基本步骤。你可以在官方文档中了解更多关于Vuex的信息:https://next.vuex.vuejs.org/

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值