面试题:Vuex与Redux比较
bug收集:专门解决与收集bug的网站
网址:www.bugshouji.com
今天为大家分享一道面试题:
vuex与redux的区别?
由于Vuex和Redux都是从Flux中衍生出来,同时Vuex对Redux部分思想也有一些借鉴,所以Vuex和Redux有很多相同点。
#相同点
state 共享数据
流程一致:定义全局state,触发,修改state
原理相似,通过全局注入store。
#不同点
从实现原理上来说:
Redux 使用的是不可变数据,而Vuex的数据是可变的。Redux每次都是用新的state替换旧的state,而Vuex是直接修改
Redux 在检测数据变化的时候,是通过 diff 的方式比较差异的,而Vuex其实和Vue的原理一样,是通过 getter/setter来比较的
从表现层来说:
vuex 定义了state、getter、mutation、action四个对象;
redux 定义了state、reducer、action。
vuex 中state统一存放,方便理解;
redux state依赖所有reducer的初始值
vuex 有getter,目的是快捷得到state;
redux 没有这层,react-redux mapStateToProps参数做了这个工作。
vuex 中 mutation只是单纯赋值(很浅的一层);
redux 中reducer只是单纯设置新state(很浅的一层)。他俩作用类似,但书写方式不同
vuex 中action有较为复杂的异步ajax请求;
redux 中action中可简单可复杂,简单就直接发送数据对象({type:xxx, your-data}),复杂需要调用异步ajax(依赖redux-thunk插件)。
vuex触发方式有两种commit同步和dispatch异步;
redux同步和异步都使用dispatch
#详细解释
#Vuex
类型
state: 共享数据
getter: 快捷state
mutation: 同步更新,只是简单都赋值
action: 异步更新,可以调用commit来触发同步mutation
触发
commit 触发mutation同步操作
dispatch 触发action异步操作
库结合(自带)
mapState
mapGetters
mapMutations
mapActions
其他
UI跟state、action/dispatch相关
mutations 同步修改state。UI触发使用commit指令
action 内可以commit同步state或dispatch异步另外一个action。UI触发使用dispatch指令
#Redux
类型
store: 合并所有reducer,共享数据
reducer: 两个作用:1. 初始值合并获得state 2. 简单的赋值,获取新的state代替老的state
action: 触发函数。是唯一可以带上数据修改state的触发对象。接下逻辑就转移到reducer中
注:也可以反过来理解:Vuex的每一次this.$store.commit('type', data) === action(data){ return { type, data}})
触发 (依赖react-redux)
dispatch触发同步或异步。使用mapDispatchToProps参数
库结合(依赖react-redux)
mapStateToProps
mapDispatchToProps
简单理解,reducer承担了state和mutations功能。Vuex 中 commit-mutations是唯一修改state的方式;Redux中dispatch-reducer是唯一修改state方式
#总结
- vuex的流向:
- view——>commit——>mutations——>state变化——>view变化(同步操作)
- view——>dispatch——>actions——>mutations——>state变化——>view变化(异步操作)
- redux的流向:view——>actions——>reducer——>state变化——>view变化(同步异步一样)
参考:
https://zhuanlan.zhihu.com/p/508807939
苟有恒 , 何必三更眠五更起
相关文章
- 星脉高性能计算网络:为AI大模型构筑网络底座
- 【已解决】在docker里面安装es时候提示IPv4 forwarding is disabled. Networking will not work.
- Vue DevUI v1.4 版本发布:从体验、效率、质量三个方面做了全方位的优化🎉
- 使用Angular构建单页面应用(SPA)
- 如何在 pyqt 中实现桌面歌词
- 对 python 中 @property 和计算属性的一些思考
- 如何使用 numpy 和 pytorch 快速计算 IOU
- 实践案例丨基于ModelArts AI市场算法MobileNet_v2实现花卉分类
- 美女面试官问我Python如何优雅的创建临时文件,我的回答....
- 绝了,华为云服务器“The 3”出道,每款都很能打
- Volcano火山:容器与批量计算的碰撞
- 【华为云技术分享】LiteOS无法直接烧录或者烧录失败解决方法--ST-Link
- 快速了解云原生中的微服务应用(内含福利)
- 从软件开发到 AI 领域工程师:模型训练篇
- 【福利活动】华为云“上云之路”征文大赛开启,FreeBuds3无线耳机等重磅好礼送不停
- 【儿童节特辑】风格迁移——让你的照片秒变手绘日漫风
- 【极客思考】计算机网络:Wireshark抓包分析TCP中的三次握手与四次挥手
- 低代码开发平台发展趋势:低代码——炒作还是趋势?
- 我们谈自动驾驶网络到底在谈什么?
- 【昇腾】ModelArts与Atlas 200 DK云端协同开发——行人检测Demo(完整版)