补充组件通信
This commit is contained in:
parent
4662ac60e1
commit
9a33901803
@ -1,6 +1,20 @@
|
||||
<script setup>
|
||||
import { RouterLink, RouterView } from 'vue-router'
|
||||
import HelloWorld from './components/HelloWorld.vue'
|
||||
import { provide, ref } from 'vue';
|
||||
|
||||
const title = ref('You did it')
|
||||
|
||||
const username = ref('will')
|
||||
provide('username', username)
|
||||
|
||||
// v-mode 帮你处理来
|
||||
// update:modelValue
|
||||
// @update:modelValue=changedHandler
|
||||
// const changedHandler = (v) => {
|
||||
// title.value = v
|
||||
// }
|
||||
|
||||
</script>
|
||||
|
||||
<template>
|
||||
@ -8,9 +22,11 @@ import HelloWorld from './components/HelloWorld.vue'
|
||||
<img alt="Vue logo" class="logo" src="@/assets/logo.svg" width="125" height="125" />
|
||||
|
||||
<div class="wrapper">
|
||||
<HelloWorld msg="You did it, this is my arg!" />
|
||||
<!-- modelValue -->
|
||||
<HelloWorld v-model:msg="title" />
|
||||
<!-- <component></component> -->
|
||||
|
||||
<hr>
|
||||
<input style="width: 400px;" v-model="username" type="text">
|
||||
<nav>
|
||||
<RouterLink to="/">Home</RouterLink>
|
||||
<RouterLink to="/about">About</RouterLink>
|
||||
|
@ -1,4 +1,7 @@
|
||||
<script setup>
|
||||
|
||||
import { inject, ref, watch } from 'vue';
|
||||
|
||||
// func XXXX(msg: string)
|
||||
const pros = defineProps({
|
||||
msg: {
|
||||
@ -9,6 +12,24 @@ const pros = defineProps({
|
||||
|
||||
|
||||
|
||||
|
||||
// 通过父组件, 修改msg, 回调函数/事件
|
||||
// {'changed': fn, 'xxxx': fn}
|
||||
// @changed=()=>{} @xxxx=()=>{}
|
||||
// emit 事件总线 emit('changed', x, y, z)
|
||||
// 调用事件总线,发送事件
|
||||
// fn(args)
|
||||
const emit = defineEmits(['update:msg'])
|
||||
|
||||
const inputText = ref(pros.msg)
|
||||
watch(inputText, (v, ov)=> {
|
||||
emit("update:msg", v)
|
||||
}, {immediate: true})
|
||||
|
||||
|
||||
//
|
||||
const username = inject('username')
|
||||
|
||||
</script>
|
||||
|
||||
<template>
|
||||
@ -19,6 +40,9 @@ const pros = defineProps({
|
||||
<a href="https://vite.dev/" target="_blank" rel="noopener">Vite</a> +
|
||||
<a href="https://vuejs.org/" target="_blank" rel="noopener">Vue 3</a>.
|
||||
</h3>
|
||||
<input style="width: 400px;" v-model="inputText" type="text">
|
||||
<hr>
|
||||
<span>username: {{ username }}</span>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user