美文网首页
当面试官问你provide和inject使用场景

当面试官问你provide和inject使用场景

作者: 小遁哥 | 来源:发表于2022-07-11 09:22 被阅读0次

    我在面试的时候更喜欢问一些组件封装、代码复用之类的东西,这会使得项目更利于维护,也会在后面的开发中逐步收益,向越来越好,越来越快的方向前行。

    一些开发者是真得能够忍受繁琐,前人挖坑后人埋嘛,比如一个对话场景,既能够发文字也能发音频,那么 Audio 组件实现单一音源的播放没什么争议,那么要控制用户播放 A 语音的同时,点击 B 语音,B 语音播放,A 语音停止该怎么实现呢?

    坏的方案,Autio 组件在每次触发播放的时候通过$emit 告诉使用组件,把控制播放器的实例传过去,这样就可以关闭"旧"的,播放"新"组件,那么问题来了,类似需求都会有重复的逻辑要被抒写。

    其实可以将关闭"旧"的,播放"新"的代码封在 SingePlay 组件里,与 Autio 组件采用 provide 和 inject 的方式通信,这样就提升了内聚性。

    provide 和 inject 适合组件之间存在紧密联系的场景,可以忽视层级。

    比如一个页面内做代码分割,完成注册用户分三步,每一步都涉及表单验证,而且上一步和下一步之间有数据交互,这个时候还老老实实的使用 props、emit、ref啥的,不仅写起来繁琐,数据流向也会很乱,Step1的数据通过emit 的方式传给父组件,再传给 Step2 组件,在来个上一步的话,况且组件层级加深,代码就要调整...

    当然 provide 和 inject 也不是万能的,只有结合实际用对了场景才能起到好效果,如果把"整体"比作一个人的话,provide 和 inject 相当于优化内部通讯方式,以前需要层层审批,但使用和提供者都是好器官,就直接开绿色通道了,mixins 相当于给人赋予某种能力,props 和$emit 相当于人与人之间的通信。

    那么怎样去划分"整体"就是体现抽象能力的时候了。

    相关文章

      网友评论

          本文标题:当面试官问你provide和inject使用场景

          本文链接:https://www.haomeiwen.com/subject/qwzgbrtx.html