vue3 父子组件之间的传值
第一种:需要用到 defineProps,defineEmits;用法其实跟vue2.x基本上还是一样的
父传子:parent.vue
<template>
<div>
<child :value="value" @add="childClick" :msg="msg" />
<br />
<div>{{msg1}}</div>
<br />
<button @click.stop="parentClick()">父组件按钮</button>
</div>
</template>
<script setup lang="ts">
/**
* 引入必要的模块
*/
import { ref } from 'vue'
import child from './Child .vue'
/**
* 定义数据
*/
const value = ref<number>(0);
const msg = ref<string>('我是父组件传递过来的值啊~~');
const msg1 = ref<string>('')
/**
* 定义方法
*/
const parentClick = ()=> {
value.value++
}
const childClick = (value)=>{
msg1.value = value
}
</script>
子组件:child.vue
<template>
<div>
<h1>{{ props.msg }}</h1>
<h1>{{ props.value }}</h1>
<button @click="onChildClick">子组件按钮</button>
</div>
</template>
<script setup lang="ts">
/**
* 定义数据
*/
const props = defineProps({ value: { type: Number },msg:{type:String} })
const emit = defineEmits(['add'])
/**
* 定义方法
*/
const onChildClick = ()=> {
emit('add', '我是子组件传过来的值')
}
</script>
第二种:父级组件向多层子组件传值 provide 和 inject
父级组件:
import { provide} from 'vue';
provide('parentMsg','我是父组件');
子组件:
import {inject} from 'vue';
const sonMsg = inject(parentMsg)
孙子组件
import {inject} from 'vue';
const grandsonMsg = inject(parentMsg)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
2020-01-10 ant design vue + ts 时遇到的坑之from 表单
2020-01-10 vue/cli3 + typescript 中watch prop component computed 的用法