组件之间的v-model,为什么可以v-model,大家可以去看看v-model的原理,然后就会发现这个方法一目了然。
父组件
<template>
<div>
<Child v-model:num="num"></Child>
<!--下面就相当于上面 -->
<Child :num="num" @update:num='num=$event'></Child>
</div>
</template>
<script setup lang="ts">
import { ref } from 'vue';
import Child from './views/child.vue'
let num = ref(10)
</script>
<style scoped lang="less">
</style>
子组件
<template>
<div>
<h1>app传过来的数据为{{num}}</h1>
<button @click="send">子传父</button>
</div>
</template>
<script setup lang="ts">
defineProps({
num:{
type:Number,
default:100
}
})
const emit = defineEmits<{
//event必须写成update:num
(event:'update:num',childnum:number):void
}>()
const send = ()=>{
emit('update:num',50)
}
</script>
<style scoped lang="less">
</style>
假如子组件需要按照某个方法变化,那么可以自己定义,比如需要自增加50
<template>
<div>
<h1>app传过来的数据为{{num}}</h1>
<button @click="send">子传父</button>
</div>
</template>
<script setup lang="ts">
let props = defineProps({
num:{
type:Number,
default:100
}
})
const emit = defineEmits<{
(event:'update:num',childnum:number):void
}>()
// 不要直接修改父组件传过来的值
// 建议赋值给其他变量后再修改
let nchange = props.num
const send = ()=>{
nchange+=50
emit('update:num',nchange)
}
</script>
<style scoped lang="less">
</style>
文章来源地址https://www.toymoban.com/news/detail-637190.html
文章来源:https://www.toymoban.com/news/detail-637190.html
到了这里,关于Vue3.2+TS的组件间的v-model传值的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!