Vue如何修改slot插槽传递的值

古人云:“温故而知新”,诚不欺我也。

遇到这种问题起始基本是将数据内容作为一级参数传递给了插槽作用域,比如需要传递的内容是:

const user = {
  "name": "小明",
  "age": 19
}

那么在编写插槽时可能这样写:

<slot name="form" v-bind="user"></slot>

在使用时这样用:

<template v-slot:form="user">
</template>

这样做是无法通过注入v-model修改插槽传递的内容的,其实只需要做一点点小改变,将所传递的内容放到一个对象内部:

<slot name="form" v-bind="{ user }"></slot>

同时在使用时解构插槽 Prop

<template v-slot:form="{ user }">
</template>

那么使用el-form-itemv-model也能修改插槽传递的值了。

还有一种方法,Form input elements and v-model in VueJS slots一文中提出了使用:value@input

<template v-slot="{value, update}">
  <input :value="value" @input="update">
</template>

但我不太建议使用这种形式,因为对组件的调用者来说很不友好。文中的第二种方式倒是给了我灵感。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值