在vue中子组件需要接受父组件传递的值,可以通过props来传递,如下
子组件配置
<script setup lang="ts">
defineProps(['title'])
defineEmits(['alertEvent'])
</script>
<template>
<div>
<h1>{{ title }}</h1>
<button @click="$emit('alertEvent',title)">点我</button>
</div>
</template>
<style scoped>
h1 {
font-weight: 500;
font-size: 2.6rem;
position: relative;
top: -10px;
}
h3 {
font-size: 1.2rem;
}
.greetings h1,
.greetings h3 {
text-align: center;
}
@media (min-width: 1024px) {
.greetings h1,
.greetings h3 {
text-align: left;
}
}
</style>
需要在setup块中使用defineProps([‘title’])定义,属性名,接受的属性可直接使用于模版内,
父组件传值
<template>
<header>
<img alt="Vue logo" class="logo" src="@/assets/logo.svg" width="125" height="125" />
<div class="wrapper">
<!-- <HelloWorld msg="You did it!" /> -->
<Demo title="hello world" v-on:alertEvent="accept"/>
<nav>
<RouterLink to="/">Home</RouterLink>
<RouterLink to="/about">About</RouterLink>
</nav>
</div>
</header>
<RouterView />
</template>
直接在标签内使用title属性
如果是响应式的,可以使用v-bind写法 :title
https://cn.vuejs.org/api/sfc-script-setup.html#defineprops-defineemits