• 【Vue】vuex 求和案例


    Vuex的基本使用:
    1、初始化数据 state,配置actionsmutations,操作文件store.js
    2、组件中读取 vuex 中的数据 $store.state.数据
    3、组件中修改 vuex 中的数据 $store.dispatch('action中的方法名', 数据)
    $store.commit('大写方法名', 数据)
    若没有网络请求或其他业务逻辑,组件中也可越过actions,即不写dispatch,直接编写commit

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

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

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

    main.js

    1. import Vue from 'vue'
    2. import App from './App.vue'
    3. import store from './store/index'
    4. Vue.config.productionTip = false
    5. new Vue({
    6. render: h => h(App),
    7. store
    8. }).$mount('#app')

    src/store/index.js该文件用于创建Vuex中最为核心的store

    1. //引入Vue核心库
    2. import Vue from 'vue'
    3. //引入 Vuex
    4. import Vuex from 'vuex'
    5. //应用vuex插件
    6. Vue.use(Vuex)
    7. //准备actions对象---响应组件中用户的动作
    8. const actions = {
    9. conditionSum (context, value) {
    10. if (context.state.sum % 2 == 1) {
    11. context.commit('CONDITIONSUM', value)
    12. }
    13. },
    14. waitSum (context, value) {
    15. setTimeout(() => {
    16. context.commit('WAITSUM', value)
    17. }, 1000);
    18. }
    19. }
    20. //准备mutation对象---修改state中的数据
    21. const mutations = {
    22. ADDSUM (state, value) {
    23. state.sum += value
    24. },
    25. SUBTRACTSUM (state, value) {
    26. state.sum -= value
    27. },
    28. CONDITIONSUM (state, value) {
    29. state.sum += value
    30. },
    31. WAITSUM (state, value) {
    32. state.sum += value
    33. }
    34. }
    35. //准备state对象---保存具体的数据
    36. const state = {
    37. sum: 0
    38. }
    39. //创建并暴露store
    40. export default new Vuex.Store({
    41. actions,
    42. mutations,
    43. state
    44. })

    Count.vue

    1. <script>
    2. export default {
    3. name: "Count",
    4. data() {
    5. return {
    6. number: 1,
    7. };
    8. },
    9. methods: {
    10. addSum() {
    11. this.$store.commit("ADDSUM", this.number);
    12. },
    13. subtractSum() {
    14. this.$store.commit("SUBTRACTSUM", this.number);
    15. },
    16. conditionSum() {
    17. this.$store.dispatch("conditionSum", this.number);
    18. },
    19. waitSum() {
    20. this.$store.dispatch("waitSum", this.number);
    21. },
    22. },
    23. };
    24. script>
    25. <style scoped>
    26. button {
    27. margin-left: 5px;
    28. }
    29. style>

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

    输出两个参数

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

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

    然后我们试试调用下 commit

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

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

    然后输出 a,b

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

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

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

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

    模板上不需要写 this

    实现减

    store.index.js

    组件

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

    判断是写在组件里的

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

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

    然后会发现

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

    然后注掉之后

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

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

  • 相关阅读:
    搜索店铺列表API 返回值说明
    Java大牛必会|分布式缓存实现方案之Spring Cache
    FTX:这个加密货币冬天与以前的冬天非常相似
    Linux TCP/IP 协议栈调优
    javaScript 计算以过去的时间
    图像处理:U-Net中的重叠-切片(Overlap-tile)
    【Spring-MyBatis】数据库字段下划线映射到 java 对象的驼峰式命名属性
    【网络通信】初探网络层次结构(OSI七层网络模型)
    Spring Boot中解决跨域问题(CORS)
    Linux安装MySQL
  • 原文地址:https://blog.csdn.net/qq_37308779/article/details/125905090