Heim >Web-Frontend >View.js >Eine kurze Diskussion über verschiedene Methoden der Vue3-Komponentenkommunikation
Wie kommuniziere ich zwischen vue3-Komponenten? Der folgende Artikel führt Sie durch verschiedene Möglichkeiten der Kommunikation mit vue3-Komponenten. Ich hoffe, dass er für Sie hilfreich ist. Die Kommunikationsmethoden für Vue3-Komponenten lauten wie folgt: Props, Emit, Ref, Attrs
VuexHandschuh
[Verwandte Empfehlung: "vue.js tutorial"]
<child :msg2="msg2" /> <script setup> const props = defineProps({ // 写法一 msg2:String // 写法二 msg2:{ type:String, default:'' } }) console.log(props) // {msg2:'这是传级子组件的信息2'} </script>
//Child.vue <template> // 写法一 <div @click="emit('myclick')">按钮</div> // 写法二 <div @click="handleClick">按钮</div> </template> <script setup> // 方法一 const emit = defineEmits(['myClick'],['myClick2']) // 方法二 const handleClick = () => { emit('myClick','这是发送给父组件的信息'); } // 方法二 不适用于vue3.2,使用的useContext()已经舍弃 import { useContext } from 'vue' const { emit } = useContext() const handleClick = () => { emit('myClick','这是发送给父组件的信息' } </script> // Parent.vue响应 <template> <child @myClick="onMyClick"></child> </template> <script setup> import child from "./child.vue" import onMychilk = (msg) => { console.log(msg) // 父组件收到的信息 } </script>
<script setup> // 方法一:useContext() vue3.2 之后已经舍弃 import { useContext } from 'vue' const ctx = useContext() // 对外暴露属性方法等都可以 ctx.expose({ childName: '这是子组建的属性', someMethod(){ console.log('这是子组件的方法') } }) </script> // Parent.vue 注意 ref="comp" <template> <child ref="comp"></child> <button @click="handleClick">按钮</button> </template> <script> import child from './child.vue' import { ref } from 'vue' const comp = ref(null) const handleClick = () => { console.log(comp.value.childName) comp.value.someMethod() // 调用子组件对外暴露的方法 } </script>
// 父组件 <child :msg1="msg1" :msg2="msg2" title="3333"></child> <script setup> import child from './child.vue' import { ref,reactive } from 'vue const msg1 = ref('111') const msg2 = ref('222') </script> // 子组件 <script setup> import { defineProps,useContext,useAttars } from 'vue' const props = defineProps({ msg1: String }) // 方法1 const ctx = useContext() console.log(ctx.attars) // {msg2:'222',title:'333'} // 方法2 const attrs = useAttars() console.log(attars) // {msg2:'2222',title:'3333'} </script>v-model
<child v-model:key="key" v-modle:value="value" /> <script> import child from './child.vue' import { ref,reactive } from 'vue' const key = ref('111') const value = ref('222') </script> //子组件 <template> <button @click="handleClick"></button> </template> <script setup> // 方法一 v3.2 已被移除 import { useContext } from 'vue' const { emit } = useContext() // 方法二 import { defineEmits } from 'vue' const emit = defineEmits(['key','value']) //用法 const handleClick = () => { emit('update:key','新的key') emit('update:value','新的value') } </script>
Das obige ist der detaillierte Inhalt vonEine kurze Diskussion über verschiedene Methoden der Vue3-Komponentenkommunikation. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!