Vue:父子组件传值( props、sync、v-model )

这篇具有很好参考价值的文章主要介绍了Vue:父子组件传值( props、sync、v-model )。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

父子组件props传值

子组件通过$emit方法,通过自定义事件的方式将自身的值传递给父组件

// 子组件通过$emit方法,并传入事件名称'change'来触发父组件监听的change事件
this.$emit('change', 200)

// 父组件监听change事件
<Son :value="num" @change="changeNum" />

父子组件传值 .sync 修饰符

在有些情况下,我们可能需要对一个 prop 进行“双向绑定”。不幸的是,真正的双向绑定会带来维护上的问题,因为子组件可以变更父组件,且在父组件和子组件两侧都没有明显的变更来源。
所以推荐以 update:myPropName 的模式触发事件取而代之。
.sync修饰符

// 子组件通过$emit方法,并传入事件名称'update:value'来触发父组件监听的 @update:value 事件
this.$emit('update:value', 200)

// 父组件监听@update:value 事件
<Son :value="money" @update:value="(val) => this.money = val" />

// .sync简写 等价于 @update:value="(val) => this.money = val"
<Son :value.sync="money"/>

v-model组件传值

一个组件上的 v-model 默认会利用名为 value 的 prop 和名为 input 的事件,但是像单选框、复选框等类型的输入控件可能会将 value attribute 用于不同的目的。model 选项可以用来避免这样的冲突
自定义组件的-v-model

// 子组件通过$emit方法,并传入事件名称'input'来触发父组件监听的 @input 事件
this.$emit('input', 200)

// 父组件监听@input 事件
<Son :value="money" @input="(val) => this.money = val" />

// v-model 等价于 @input="(val) => this.money = val"
<Son v-model="money"/>
.syncv-model 的区别 ?

这里是引用
相同点
都是语法糖,都可以实现父子组件中的数据的双向通信。
区别点
格式不同: v-model=“num”, :num.sync=“num” v-model: @input + value
传递value值,是固定的 :num.sync: @update:num :num是因为一个自定义组件可以传输多个值,用来区分的
v-model只能用一次;.sync可以有多个。文章来源地址https://www.toymoban.com/news/detail-401020.html

参考
  • https://zhuanlan.zhihu.com/p/85338233
  • https://blog.csdn.net/weixin_48837605/article/details/119616396

到了这里,关于Vue:父子组件传值( props、sync、v-model )的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue3探索——组件通信之v-model父子组件数据同步

    再很多场景中,我们可能想在子组件中修改父组件的数据,但事实上,vue不推荐我们这么做,因为数据的修改不容易溯源。 在vue2中,我们使用 .sync 修饰符+自定义事件 \\\'update:xxx\\\' ,来使父子组件数据同步。 这里不作过多说明,有需要请自行了解。 vue3的写法与vue2基本一致。最

    2024年02月11日
    浏览(60)
  • Vue3.2+TS的组件间的v-model传值

    组件之间的v-model,为什么可以v-model,大家可以去看看v-model的原理,然后就会发现这个方法一目了然。 父组件 子组件 假如子组件需要按照某个方法变化,那么可以自己定义,比如需要自增加50

    2024年02月13日
    浏览(48)
  • 父组件明明使用了v-model,子组件竟然可以不用定义props和emit抛出事件,快来看看吧

    vue3.4增加了 defineModel 宏函数,在子组件内修改了 defineModel 的返回值,父组件上 v-model 绑定的变量就会被更新。大家都知道 v-model 是 :modelValue 和 @update:modelValue 的语法糖,但是你知道为什么我们在子组件内没有写任何关于 props 的定义和 emit 事件触发的代码吗?还有在 template

    2024年04月08日
    浏览(80)
  • 微信小程序:uni-app列表数据渲染子组件修改数据sync/v-model无效的问题

    有如下一个列表,将数据循环传递给子组件,实现业务解耦,组件拆分 Vue的正常逻辑是,父组件和子组件的数据传递的是一个对象,属于引用传递,可以直接在子组件中修改数据,父组件中也会变化,它们操作的是同一个数据。 uni-app子组件中修改 H5正常,转为微信小程序后

    2024年02月10日
    浏览(61)
  • vue3 父子组件传值 记录

    最近这个组件之间传值用的较多,我这该死的记性,总给忘记写法,特此记录下 补充:LeftView.vue 是父组件; Video.vue 是子组件 Video.vue 子组件 LeftView.vue 父组件 第一步 创建bus.js文件 第二步 分别在需要相互传参的组件中引入bus.js文件,并相互传参

    2024年02月11日
    浏览(44)
  • Vue3 v-model cannot be used on a prop,

    所有的 props 都遵循着 单向绑定 原则,props 因父组件的更新而变化,自然地将新的状态向下流往子组件,而不会逆向传递。这避免了子组件意外修改父组件的状态的情况,不然应用的数据流将很容易变得混乱而难以理解。 另外,每次父组件更新后,所有的子组件中的 props 都

    2023年04月23日
    浏览(37)
  • vue父子组件之间传值的方法

    父传子 方式: props 效果: 把父组件的 fatherName 属性传入子组件,在子组件中使用 父组件代码: 子组件代码: 子传父 方式: $emit 效果: 在子组件触发事件,修改父组件的fatherName属性 父组件代码: 子组件代码: 兄弟传值 方式: eventBus.js 效果: 任意组件之间相互传值 代

    2024年02月09日
    浏览(46)
  • vue父子组件传值不能实时更新

    最近做项目,遇到个大坑,这会爬出来了,写个总结,避免下次掉坑。 vue父子组件传值不能实时更新问题,父组件将值传给了子组件,但子组件显示的值还是原来的初始值,并没有实时更新,为什么会出现这种问题呢? 出现这个问题,可能有以下两个原因: 一、 父组件没有

    2024年02月16日
    浏览(53)
  • Vue3 TS写法 父子组件传值(通讯)

    父组件: 子组件: 通过defineProps来接受数据(无须引入直接使用即可) 子组件可写默认值也可以不写两种情况 子组件通过defineEmits派发一个事件 (一样无须引入直接使用即可)  父组件接受子组件的事件 chilFun

    2024年02月15日
    浏览(40)
  • vue3父组件异步props传值,子组件接收不到值问题

    当我们使用vue3进行开发在创建组件的时候,子组件经常需要调用父组件的数据,那么这是就需要vue3的props进行对父组件与子组件通信来达到传值的效果 在使用props进行父子组件通信时,子组件无法成功渲染数据,导致拿到数据为空问题 提示:这里填写问题的分析: 在使用

    2024年02月11日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包