zoukankan      html  css  js  c++  java
  • vuex的学习笔记

    组件调用dispatch方法通知action,意思是执行action下的一个方法


    var pageNum = this.pagination.current_page
    this.$store.dispatch('All_getSetting', pageNum - 1)  // 这里带了一个页码参数执行了action下的All_getSetting方法

    import Api from '../api'
    const action = {

      /*查询所有设置数据*/
      All_getSetting (context, param = {pageNum: 0}) {  //content是默认的参数,是store的实例,context.state即可获取state属性,param自定义参数对象,默认属性pageNum即页码为0
        var data = {
           accountName: context.state.query.account.name  //获取账号名称
        }
        data = Object.assign(data, publicData(context, param.pageNum))  //传递的参数,这里使用了 Object.assign 深度复制,类似JQ的extend
        context.commit('LOADING_OPEN') // 触发mutation下的方法,改变loading状态,打开loading层
        Api.getAllSettingList(data, function (respond) { //api 对象下该模块获取数据的方法
          context.commit('LOADING_CLOSE')  // 加载成功    触发mutation下的方法,改变loading状态,关闭loading层
          context.commit(types.ALL_GET_SETTING, respond) // 将响应data提交给mutation,意思是执行mutation下的一个方法
        }, function (error) {
          context.dispatch('Root_errors', error)  // 加载失败   dispatch到action下,将错误响应传过来,触发mutation下的方法,改变loading状态,关闭loading层
        })
          }
        }

    /*将后端Api接口全部放在一个vue文件中是为了将所有数据接口放在同一个文件统一管理 */  
      export default {
        getAllSettingList (argus = {}, successCallback = () => {}, errorCallback = () => {}) {
          Vue.http.post('/am/setting/list', argus, {timeout: timeout}).then(response => {
            successCallback(response.body) //对应上面的成功处理
          }, response => {
            errorCallback(response.body) //对应上面的失败处理
          })
        },  
      }

     /*将Root_errors方法放在跟级别的action下 是为了做一个全局错误处理*/  
      Root_errors (context, error) {
        context.commit('LOADING_CLOSE')  //在全局关闭加载错误之后的loading
        context.commit(types.MODAL_OPEN, {  //在全局控制错误弹框样式
           type: 'error',
            content: error,
            btn: false,
             250,
            height: 120
         })
       }

    终于到了mutation这一步,改变状态,展示数据,就成功了

    const mutations = {
      [types.ALL_GET_SETTING] (state, argus) { //之前action下成功加载的commit方法
        // 判断argus(即传过来的respond)是否为空
        if (argus == null || argus.length <= 0) argus = []
        state.settingData = argus //不为空则把数据给state下的settingData
      },

    }

    这下让我们看看settingData怎么用的吧

    const state = {
      settingData: [] //预定义的值是空值,经过上面一系列的步骤,已经有值了
    }

    /*html*/
    <tr  v-for="item in AllModule.settingData">
    <td>{{item.start}}</td>
    <td>{{item.end}}</td>
    <td>{{item.deliveryTime}}</td>
    </tr>

    /*组件调用*/
    export default {
      name: 'setting',
      components: {
      },
      computed: {
        AllModule () {
          return this.$store.state.settingData
    }

    这样就可以展示数据了,各种事件处理还要结合vue的生命周期的钩子函数,避免出现各种BUG

  • 相关阅读:
    12
    Kafka设计解析(二)- Kafka High Availability (上)
    Apache kafka 工作原理介绍
    Kafka设计解析(一)- Kafka背景及架构介绍
    【转载】MySQL之权限管理
    【转载】漫谈HADOOP HDFS BALANCER
    【转载】HDFS 上传文件不均衡和Balancer太慢的问题
    【转载】mysql binlog日志自动清理及手动删除
    【转】Typora极简教程
    更新Linux服务器时间
  • 原文地址:https://www.cnblogs.com/xue-wejie/p/7443064.html
Copyright © 2011-2022 走看看