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

子组件怎么知道自己需要提交?

  •  1
     
  •   gromit1337 · 89 天前 · 1259 次点击
    这是一个创建于 89 天前的主题,其中的信息可能已经有所发展或是发生改变。

    循环子组件,数据通过 props 传递,其中一个编辑完了之后在外面点击提交,怎么拿到子组件的数据? 大概就是这么个情况,想半天没想出来

    16 条回复    2021-09-01 15:33:45 +08:00
    EscYezi
        1
    EscYezi   89 天前 via iPhone
    用 store 模式可以(貌似不应该这样做
    dvsilch
        2
    dvsilch   89 天前   ❤️ 1
    我是把数据放在父组件维护,给子组件的数据加上.sync 修饰符,然后 emit('update: propsName')保证数据同步
    xiaoming1992
        3
    xiaoming1992   88 天前 via Android
    既然通过 props 传递,那子组件就应该在 onchange 或者 onblur 的时候将自身的状态往父组件抛。或者也可以用 ref,让父组件持有子组件的引用也行。
    SxqSachin
        4
    SxqSachin   88 天前   ❤️ 1
    父组件持有数据,子组件变动时反馈给父组件
    gromit1337
        5
    gromit1337   88 天前
    @dvsilch #2 3.x 现在是用 v-model 我试了,好像不可以和 v-for 一起用
    gromit1337
        6
    gromit1337   88 天前
    @SxqSachin #4 外面点击提交,编辑状态的子组件怎么知道自己该提交了
    suyi2015
        7
    suyi2015   88 天前
    父组件设计数据结构 存储 子组件的取值函数(子组件初始化完成后进行设置)。

    提交时父组件依次调用各个取值函数组装出完整数据。
    RexG
        8
    RexG   88 天前
    可以在 v-for 中给子组件设置 ref,例如 :ref='"test"+item.id' 然后提交是的时候遍历 refs,触发子组件内部函数,函数体当然是返回子组件数据或者其他你希望的操作。

    当然正常情况应该是把数据交给父组件保存,子组件只负责通过 emit 修改数据,不太清楚你这个循环子组件是干什么的?
    Kimen
        9
    Kimen   88 天前
    最简单的就是用 ref,还有就是 vue-bus 或者 vuex,都可以
    gromit1337
        11
    gromit1337   88 天前
    @RexG #8 数据是在父组件里的,但是子组件里会修改
    shintendo
        12
    shintendo   88 天前
    @gromit1337 外面点击提交,编辑状态的子组件怎么知道自己该提交了
    -------------
    都说父组件持有数据了,子组件不需要知道
    shintendo
        13
    shintendo   88 天前
    @gromit1337 数据是在父组件里的,但是子组件里会修改
    -----------
    修改的时候通知父组件,而不是提交的时候
    summerLast
        14
    summerLast   88 天前
    有三种方式
    1 $emit
    2 $refs
    3 vuex
    summerLast
        15
    summerLast   88 天前
    @summerLast v-model 和第一种类是
    dvsilch
        16
    dvsilch   88 天前
    @gromit1337 你可能没有在 set 函数里进行$emit 通知父组件更新,因为这个值就是在父组件维护的
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1154 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 18:20 · PVG 02:20 · LAX 10:20 · JFK 13:20
    ♥ Do have faith in what you're doing.