Skip to content

Latest commit

 

History

History
55 lines (49 loc) · 5.06 KB

interview3.md

File metadata and controls

55 lines (49 loc) · 5.06 KB

玄说前端面试层层提问—关于 redux 的面试题解答

此篇文章是 redux 系列的第三篇,上一篇关于 redux 源码解析,强烈推荐大家看一下,之前的文章如下:
玄说前端面试层层提问—关于 redux 的面试题
玄说前端面试层层提问—关于 redux 的源码

上一篇文章中咱们对于 redux 源码做了分析,再此基础之上,我们来分析第一篇文章中的面试题

今日试题解析

  • 介绍 Redux 数据流的流程;

    这道题如果看了第二篇文章中的源码,就应该知道这个流程,还是上图更为妥帖! 首先用户发出 action,经过中间件,到达 Reducer,通过 Reducer 处理后返回新的 State。state 一旦发生变化,store 就会调用监听函数,触发 UI 更新

  • Redux 如何实现多个组件之间的通信,多个组件使用相同状态如何进行管理

    在上一篇文章中的源码中,所有的数据全部最后都会在一个 state 数上面,实现多组件通信,就需要实现,一份数据多组件能够接收,同时组件之间发出的 action,最后需要通信的组件可以接收他的 state,明白了上一题的数据流模型和 redux 源码,这道题的问题不大

  • 使用过的 Redux 中间件

    上篇文章中,介绍了中间件是对 dispatch 的一种扩展,平时使用的中间件一般日志记录、异步数据请求等等都是对于在 dispatch 上做的一层扩展

  • 介绍 redux,主要解决什么问题

    redux 的作用主要就是管理数据。怎么管理,请参考第二篇文章

  • redux 请求中间件如何处理并发

    提示:请求中间件也是在 dispatch 上做的扩展。对于请求这种异步的中间件,我们来具体梳理一下他的流程,当我们点击某个按钮有发起请求的需求时,发出一个请求 action,reducer 相应之后,state 更新,触发 view 更新,更新为请求中,在请求完成之后,需要接收一个更新完成的 state 来更新 view,这个 state 的所触发的 action 需要在请求完成的时候发出来。那么这个请求怎么知道完成后要发出哪个 action 呢?这就需要在发出请求的 action 时候,就把请求结束的 action 传入。 明白了异步中间件需要处理的事情之后,对于并发而言就不用担心了,多个请求 action 同时发出,各自请求结束之后的 action 也就传入了,相互不影响。

  • Redux 中异步的请求怎么处理

    提示:异步分为请求、代码层面的 IO 或者延时,相差不大,参考上一题的解析

  • Redux 中间件是什么东西,接受几个参数

    中间件是对于 dispatch 的扩展,具体请参考上一篇文章Redux 源码

  • redux 的设计思想

    Redux 的主要作用是管理程序状态的,所有数据流全部是单项的,可预测的,这样的程序会变得更加可控

  • 接入 redux 的过程

    redux 只是一个数据状态管理器,要接入 redux,需要处理发送 action 端,接受数据的变化的监听,对于不同的 UI 框架,都可以接入 redux,react 有 react-redux 帮助接入,有兴趣的可以下来研究研究源码;

  • Redux 在状态管理方面解决了哪些 React 本身不能解决的问题

    明白了 redux 的数据处理逻辑和所有的数据全部在一个 state 之上,就能清楚 react 所不能解决的问题在哪儿了

  • Redux 有没有做过封装

    这个大家有兴趣的可以看看阿里的 DvaJS 里面的处理

  • Redux 中哪些功能用到了哪些设计模式

    在上一篇源码中。出现了订阅发布的设计模式。很多源码中也是纯函数,这就涉及到函数式编程了,后面咱们有机会再分析这块的东西

  • Redux 状态管理器和变量挂载到 window 中有什么区别

    redux 的 state 需要改变,只能通过 reducer,要触发 reducer,就需要触发相应的 action,所以 redux 里面的数据更改入口只有 action,数据流是单项的。window 上所挂载的数据可以任意修改,无限制,这样的程序,会变得非常不可控

  • 介绍下 redux 整个流程原理

    参考第一问

  • redux 状态树的管理

    参考第一问

  • redux 和全局对象之间的区别

    同上面

  • Redux 数据回溯设计思路

    数据回溯就是查看之前的数据,在 redux 当中,约定通过 reducer 所修改的都是生成的新数据,并不是在原有的数据上做修改,这就是可以做数据回溯的原因,每一次的 state 记录到队列中,回溯的时候根据队里回溯就好。

  • 聊聊 Redux 相关的异步中间件的区别,比如:redux-saga、redux-thunk

    前面已经聊过了异步中间件的原理,而不同的框架内部的机制也有不同的地方,限于篇幅原因我们找了一个比较好的资料,大家可以查看原文阅读 https://zhuanlan.zhihu.com/p/35437092

参考链接:http://www.ruanyifeng.com/blog/2016/09/redux_tutorial_part_one_basic_usages.html
https://www.jianshu.com/p/56fc34c6bf0d
https://yukwan.cn/fronttech/front-end/#redux-thunk--redux-saga