waiaan
V2EX  ›  Vue.js

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

  •  
  •   waiaan · Mar 6, 2020 · 2489 views
    This topic created in 2261 days ago, the information mentioned may be changed or developed.

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

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

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

    如 elmentui

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

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

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

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