程序员去大公司面试怎么说,Vuex 面试题:使用 vuex 的核心概念,【一步教学一步到位

本文详细介绍了在Vue应用中如何使用Vuex进行状态管理,包括如何使用计算属性获取getters中的状态,以及如何通过mutations进行状态的同步更新,actions用于处理异步操作并提交mutations。还提到了在组件中提交和分发这些操作的方法以及一份前端学习资源的分享。
摘要由CSDN通过智能技术生成

//在组件中,则要写在计算属性中,

computed: {

doneTodos () {

return this.$store.getters.doneTodos;

}

}

(2) 使用mapGetters获取getters里面的状态:方法二

import {mapState, mapGetters} from ‘vuex’;

computed: {

…mapState([‘increment’]),

…mapGetters([‘doneTodos’])

}

4)mutations

mutations 里面是如何更改 state 中状态的逻辑。更改 Vuex 中的 state 的唯一方法是,提交 mutation,即 store.commit(‘increment’) 。

(1) 提交载荷 (payload)

可以向 commit 传入额外的参数,即 mutation 的载荷。

mutations: {

increment(state, n){

state.count += n;

}

}

store.commit(‘increment’, 10);

payload 还可以是一个对象。

mutations: {

increment(state, payload)

state.count += payload.amount;

}

store.commit(‘increment’, {amount: 10});

还可以使用 type 属性来提交 mutation。

store.commit({

type: ‘increment’,

amount: 10

});

// mutations保持不变

mutations: {

increment(state, payload){

state.count += payload.amount;

}

}

注意:mutation 必须是同步函数,不能是异步的,这是为了调试的方便。

(2)在组件中提交 mutations

那么 mutation 应该在哪里提交呢? 因为js是基于事件驱动的,所以改变状态的逻辑肯定是由事件来驱动的,所以 store.commit(‘increment’) 是在组件的 methods 中来执行的。

方法1: 在组件的 methods 中提交

methods: {

increment(){

this.$store.commit(‘increment’);

}

}

方法2: 使用 mapMutaions

用 mapMutations 辅助函数将组件中的 methods 映射为 store.commit 调用。

import { mapMutaions } from ‘vuex’;

export default {

// …

methods: {

…mapMutaions([

‘increment’ // 映射 this.increment() 为 this.$store.commit(‘increment’)

]),

…mapMutaions([

add: ‘increment’ // 映射 this.add() 为 this.$store.commit(‘increment’)

])

}

}

// 因为mutation相当于一个method,所以在组件中,可以这样来使用

<button @click=“increment”>+

5)actions

因为 mutations 中只能是同步操作,但是在实际的项目中,会有异步操作,那么 actions 就是为了异步操作而设置的。这样,就变成了在 action 中去提交 mutation,然后在组件的 methods 中去提交 action。只是提交 actions的时候使用的是 dispatch 函数,而 mutations 则是用 commit 函数。

(1)一个简单的 action

const store = new Vuex.Store({

state: {

count: 0

},

mutations: {

increment(state){

state.count++;

}

},

actions: {

increment(context){

context.commit(‘increment’);

}

/* 可以用参数结构的方法来写action

increment({commit}){

commit(‘increment’);

}

*/

}

});

// action函数接受一个context参数,这个context具有与store实例相同的方法和属性。

// 分发action

store.dispatch(‘increment’);

action 同样支持 payload 和对象方式来分发,格式跟 commit 是一样的,不再赘述。

(2)在组件中分发 action

方法1: 在组件的 methods 中,使用 this.$store.dispatch(‘increment’)

方法2: 使用 mapActions,跟 mapMutations 是类似的。

import { mapActions } from ‘vuex’

export default {

// …

methods: {

…mapActions([

‘increment’ // 映射 this.increment() 为 this.$store.dispatch(‘increment’)]),

…mapActions({

add: ‘increment’ // 映射 this.add() 为 this.$store.dispatch(‘increment’)

})

}

}

// 同样在组件中,可以这样来使用

<button @click=“increment”>+

(3)组合 actions

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
img

最后

我可以将最近整理的前端面试题分享出来,其中包含HTML、CSS、JavaScript、服务端与网络、Vue、浏览器、数据结构与算法等等,还在持续整理更新中,希望大家都能找到心仪的工作。

CodeChina开源项目:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

篇幅有限,仅展示部分截图:

一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

916a8d7910506b3.png)

一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值