vue.3.0关于v-model的语法糖

当父组件向子组件传递单个属性值时,可以使用下列语法简写
在父组件中

// 把父组件中的money属性传递给son子组件
<Son v-model="money" />

在子组件中

export default{
  name:'son',
  props:{
    modelValue:{
      type:Number,
      required:true
    }
  },
  setup(props,{emit}){
    function fn10(){
      let newMoney = props.modelValue - 10
      emit('update:modelValue',newMoney)
    }
    return {
      fn10
    }
  }
}

那么在父组件中简写之前的代码应该是这个样子的

<Son :modelValue='money' v-on:update:modelValue='money=$event' />

如果你要向子组件多个属性,其实不建议大家传递一个对象过去,传递多个属性,也有语法糖
在父组件中传递一个money、一个age

// v-model只能用一次
// v-model:age="age" 可以使用多次
<Son v-model="money" v-model:age="age"></Son>

在子组件中

export default{
  name:'son',
  props:{
    modelValue:{
      type:Number,
      required:true
    },
    age:{
      type:Number,
      required:true
    }
  },
  setup(props,{emit}){
    function fn10(){
      let newMoney = props.modelValue - 10
      emit('update:modelValue',newMoney)
    }
    function add10(){
      let newNumber = props.age + 10
      emit('update:age',newNumber)
    }
    return {
      fn10,
      add10
    }
  }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 2.0中,使用v-model组件上相当于传递了value属性,并触发了input事件。例如: ``` <search-input v-model="searchValue"></search-input> ``` 相当于: ``` <search-input :value="searchValue" @input="searchValue=$event"></search-input> ``` 而在Vue 3.0中,v-model的默认属性变成了modelValue。例如: ``` <v-child v-model="numm"></v-child> ``` 等同于: ``` <v-child :modelValue="numm" @input="(e) => (numm = e.target.value)"></v-child> ``` 需要注意的是,Vue 3.0中的v-model可以在同一个组件上同时设置多个。另外,开发者也可以自定义v-model的修饰符。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Vue3.0Vue2.0的v-model使用区别](https://blog.csdn.net/weixin_42555053/article/details/115453582)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [Vue2.0、Vue3.0分别使用v-model封装组件[Vue必会]](https://blog.csdn.net/qq_43291759/article/details/118279953)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值