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

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

  •  
  •   waiaan · 2020-03-06 14:33:35 +08:00 · 1893 次点击
    这是一个创建于 1514 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    this.$parent.someMethod() 之类的写法就像是不带套套,当时各种爽,事后,大家都懂。
    Hoshinokozo
        4
    Hoshinokozo  
       2020-03-06 15:23:20 +08:00
    @GM 鬼才
    shcolo
        5
    shcolo  
       2020-03-06 15:42:24 +08:00   ❤️ 1
    @GM #3 思维清晰,描述十分到位,令人容易理解
    murmur
        6
    murmur  
       2020-03-06 15:44:47 +08:00
    对于逻辑交互不复杂(表单表格行多,页面多不等于复杂),简化开发比严格的业务流程更重要
    对于有基础的程序员,简单的东西可以用约定大于框架限制,不带套不要紧,约定你不射我不蹭就没事
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1100 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 1885ms · UTC 18:31 · PVG 02:31 · LAX 11:31 · JFK 14:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.