• vue前台(二)vuex的模块化


    放图

    home模块的vuex   home.js

    // 引入ajax的函数
    import {reqCategoryList} from '@/api'
    
    const state= {
      CategoryList:[]
    }
    
    const mutations={
      RECEIVECATEGORYLIST(state,data){
        state.CategoryList=data
      }
    }
    
    const actions={
      // 发送ajax请求
      // getCategoryList({commit}){
      //   reqCategoryList().then(res=>{
      //     commit('RECEIVECATEGORYLIST',res.data)
      //   })
      // }
    
      async getCategoryList({commit}){
        const result= await reqCategoryList()
        if(result.code===200){
          commit('RECEIVECATEGORYLIST',result.data)
        }
        
      }
    
    
      
    }
    
    const getters={}
    
    //暴露store
    export default {
      state,
      mutations,
      actions,
      getters
    }

    总的vuex   index.js

    // 引入vue
    import Vue from 'vue'
    //引入vuex插件
    import Vuex from 'vuex'
    
    // 引入组件的store
    import home from './home'
    //申明插件
    Vue.use(Vuex)
    
    const state={}
    
    const mutations={}
    
    const actions={}
    
    const getters={}
    
    //暴露store
    export default new Vuex.Store({
        state,
        mutations,
        actions,
        getters,
        modules:{
          home
        }
    })

    然后入口文件main.js中注册

    // 引入vuex
    import store from '@/store'
     
    new Vue({
     
      render: h => h(App),
      // 注册路由
      router,
      store
    }).$mount('#app')

    在typenav组件中dispatch到vuex

      mounted(){
            getcategoryList()
        },
    
        methods:{
            //dispatch到vuex
            getcategoryList(){
                this.$store.dispatch('getCategoryList')
            }
        }
    然后从vuex中获取数据
     computed:{
    
    
        // categoryList(){
        //   return this.$store.state.categoryList
        // }
    
        // ...mapState(['categoryList'])
        // ...mapState({categoryList:"categoryList"})
    
        //上面两种写法是一回事,mapState映射的时候默认映射的就是总的store的state内部的数据
        //如果使用了vuex模块化开发,那么数组的形式就无法使用了
    
        // categoryList(){
        //   return this.$store.state.home.categoryList
        // }
        
        ...mapState({
          categoryList : state => state.home.categoryList
        })
    
    
      }

    填充模板数据

     
     
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    jQuery 源码基本框架
    jQuery 源码细读 -- $.Callbacks
    Excel等外部程序点击链接会带上IE信息的bug
      与 空格的区别
    前端模板文件化jQuery插件 $.loadTemplates
    客户端渲染的页面能否被搜索引擎完整收录呢?
    javascript 函数声明问题
    JavaScript 继承机制小记
    link与@import
    tcp_udp
  • 原文地址:https://www.cnblogs.com/fsg6/p/13321125.html
Copyright © 2020-2023  润新知