前言
最开始我写vue3项目的时候父子组件传递数据,我直接按钮scope.row传递,子组件接收的时候为init接收,但是这种情况出现了一个情况就是当你点击弹窗的时候,明明数据已经给你传送接收了,断点查数据也没有问题,就是出现一个渲染有时候停留在上一个页面的bug。为此我改了数据传递的方法。下边是我最后改的,为此我整理了一下vue3Ts中如何实现父组件传递给子组件的方法,希望对大家有用!
1.父传子
父组件
<template>
<h1>父组件</h1>
<A :name="name" :age="age" ></A>
</template>
<script setup lang="ts">
import { ref ,reactive} from 'vue'
import A from '@/components/A.vue'
const name = ref<string>('chaochao')
const age = ref<number>(22)
</script>
子组件
1.使用defineProps接收
2.使用withDefaults可使传递的值有默认值。
2.子传父
子组件
1.定义defineEmits
2.发送自定义事件名,给父组件
<template>
<div>我是子组件</div>
</template>
<script setup lang="ts">
import { ref ,reactive} from 'vue'
const props = withDefaults(
defineProps<{
name:string,
age:number
}>(),{
name:'没名字',
age:18
}
)
// const props = defineProps<{
// name:string,
// age:number
// }>()
console.log('我是父组件传过来的值',props.name,props.age);
</script>
父组件
3.父组件接收
<template>
<div class="header">
我是头部区域
<h1>父组件</h1>
<A @on-click="getName"></A>
</div>
</template>
<script setup lang="ts">
import { ref ,reactive} from 'vue'
import A from '@/components/A.vue'
const getName =(value:string) => {
console.log(value); //你叫什么名字
}
</script>
<style lang="less" scoped>
.header{
height: 100px;
border-bottom: 2px solid #ccc;
}
</style>
3.暴露属性
1.使用defineExpose后,在引用子组件的父组件,可直接使用其方法和属性
子组件
<template>
<div>我是子组件</div>
</template>
<script setup lang="ts">
defineExpose({
name:'曹操',
open:() => {
console.log('boluo',);
}
})
</script>
父组件
注意:声明组件的类型
ref<InstanceType<typeof 组件类型>>()文章来源:https://www.toymoban.com/news/detail-811731.html
<template>
<div class="header">
我是头部区域
<h1>父组件</h1>
<!-- <A :name="name" :age="age" ></A> -->
<A @on-click="getName" ref="children"></A>
</div>
</template>
<script setup lang="ts">
import { ref ,reactive, onMounted} from 'vue'
import A from '@/components/A.vue'
const children = ref<InstanceType<typeof A>>()
onMounted(() => {
console.log(children.value?.name);//曹操
children.value?.open() //boluo
})
</script>
<style lang="less" scoped>
.header{
height: 100px;
border-bottom: 2px solid #ccc;
}
</style>
最后,如果大家看了之后如果对大家有用,麻烦大家点个赞,谢谢,有什么疑问欢迎评论留言。文章来源地址https://www.toymoban.com/news/detail-811731.html
到了这里,关于Vue3Ts中如何实现父组件传递给子组件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!