千锋教育-做有情怀、有良心、有品质的职业教育机构

当前位置:首页  >  关于学院  >  技术干货  >  html5技术干货  >  正文

说说Vuex的工作流程

来源:千锋教育
发布时间:2022-09-19 17:14:00
分享

Vuex的工作流程

  vuex的仓库有5个模块,分别是 state,mutations, actions, getters, modules

  我们将组件的公共状态定义在 vuex仓库的state中,state是只读的,无法直接修改,必须调动仓库中的某个mutation才能修改状态,getters可以理解为vuex中的计算属性,当我们在某个组件中使用vuex中的某个state时,不是直接使用原值,而是需要派生出一个新的值,就可以定义getters,可以在组件中获取。当依赖的state发生改变,此时getters会重新计算得到新值,同时 action中可以发送异步请求,得到数据后,commit mutation来给state赋值

  具体代码如下:

  仓库代码

const store = new Vuex.Store({

    state: {

        items: [] // 定义一个公共的购物车数据

    },

    getters: {

        // 可以基于已有的state 派生新的状态

        selectedItems (state) {

            // 过滤购物车中未选中的商品

            return state.items.filter(item => item.selected)

        }

    },

    mutations: {

        // 定义mutation来修改state

        INIT_ITEMS(state, items){

            state.items = items

        }

    },

    actions: {

        // action可以发送异步请求,得到数据后commit mutation将请求结果传入

        FETCH_ITEMS({commit}, params = {}){

            // 调用封装好的 接口函数

            fetchItem(params).then(res => {

                if(res.data.code === 200) {

                    commit('INIT_ITEMS', res.data.data)

                }

            })

        }

    }

})

组件中使用 使用vuex

// 获取state

this.$store.state.items // 直接获取

{

    computed: {

        ...mapState(['items']) // 助手函数获取

    }

}

// 获取getters

this.$store.getters.selectedItems // 直接获取

{

    computed: {

        ...mapGetters(['selectedItems']) // 助手函数获取

    }

}

// 组件中提交action

this.$store.dispatch('FETCH_ITEMS', {token: 'xxx'})

{

    methods: {

        ...mapActions(['FETCH_ITEMS']) // 助手函数 直接调用this.FETCH_ITEMS(params)触发

    }

}

// 组件中也可以直接commit  mutation

this.$store.commit('INIT_ITEMS'[,参数])

{

    methods:{

        ...mapMutations(['INIT_ITEMS']) // 助手函数 直接调用this.INIT_ITEMS(参数)

    }

}


声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

相关推荐

  • vue配置跨域怎么操作 Vue配置跨域的操作非常简单。在Vue项目中,我们可以通过配置webpack来实现跨域请求。在Vue项目的根目录下找到config文件夹,然后打开index.js文件。在该文件中,我们可以找到一个名为
  • npm包管理工具有什么用途? npm(NodePackageManager)是JavaScript生态系统中最常用的包管理工具。它是随同Node.js安装的,默认包含在Node.js的安装包中。npm允许开发者轻松地安装、更新、卸
  • vue事件修饰符有哪些? 在Vue.js中,事件修饰符是一种用于修改事件触发行为的特殊修饰符。以下是常用的事件修饰符:1.`.stop`:阻止事件继续传播,即阻止事件冒泡。2.`.prevent`:阻止事件默认行为。3.`.c
  • vue路由守卫有哪些? 在Vue.js中,路由守卫是一种用于控制导航的机制,它允许您在路由切换前后执行相应的操作。VueRouter提供了三种类型的路由守卫:1.全局前置守卫(GlobalBeforeGuards):-`be
  • css绝对定位和相对定位 CSS中的绝对定位(absolutepositioning)和相对定位(relativepositioning)是用于控制元素在页面布局中的位置的两种常见定位方式。1.绝对定位(absolutepos
  • npm安装less用法介绍 npm(NodePackageManager)是Node.js的包管理器,它允许您安装、管理和共享JavaScript模块。要安装和使用Less(一种CSS预处理器),您可以按照以下步骤进行操作:1.