V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
waiaan
V2EX  ›  Vue.js

请教一个 vue 父子组件通信的问题

  •  
  •   waiaan · 2020 年 3 月 6 日 · 2339 次点击
    这是一个创建于 2138 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在看一些源码的时候,经常会看到类似下面的写法:

       this.$children.someData=XXX;
       this.$parent.someMethod();
       ...
    

    不是应该通过 prop 或 emit 来通信吗?

    如 elmentui

    https://github.com/ElemeFE/element/tree/dev/packages/carousel/src

    6 条回复    2020-03-06 15:44:47 +08:00
    zhzbql
        1
    zhzbql  
       2020 年 3 月 6 日
    使用 prop 或 emit 是为了降低耦合度,使组件更加通用。
    当一个组件是高度定制化的,不考虑复用与公用的,直接调用父子组件更加直接与简单。
    Vegetable
        2
    Vegetable  
       2020 年 3 月 6 日
    这就是在我(现在的我)爽和别人(未来的我)爽之间做出的抉择了。
    GM
        3
    GM  
       2020 年 3 月 6 日   ❤️ 1
    prop 或 emit 就像是套套,安全,无副作用,隔离性好,各种好。

    就只有一个缺点:不那么爽。

    this.$parent.someMethod() 之类的写法就像是不带套套,当时各种爽,事后,大家都懂。
    Hoshinokozo
        4
    Hoshinokozo  
       2020 年 3 月 6 日
    @GM 鬼才
    ofDamon
        5
    ofDamon  
       2020 年 3 月 6 日   ❤️ 1
    @GM #3 思维清晰,描述十分到位,令人容易理解
    murmur
        6
    murmur  
       2020 年 3 月 6 日
    对于逻辑交互不复杂(表单表格行多,页面多不等于复杂),简化开发比严格的业务流程更重要
    对于有基础的程序员,简单的东西可以用约定大于框架限制,不带套不要紧,约定你不射我不蹭就没事
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   3781 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 41ms · UTC 05:08 · PVG 13:08 · LAX 21:08 · JFK 00:08
    ♥ Do have faith in what you're doing.