[英]Changing prop of component in vue.js with composition API
如何更改组件的 prop 值并将更改通知这些组件?
父.vue
<script setup>
import Child from './Child.vue'
const finished = ref(false)
function submit() {
finished.value = true;
}
</script>
<template>
<Child :open="finished">
<button @click="submit">Klick</button>
</template>
孩子.vue
<template>
<div v-if="open">Dies ist ein Test.</div>
</template>
<script setup>
import { ref } from 'vue'
const props = defineProps(['open'])
const open = ref(props.open)
</script>
当我单击按钮时,值会发生变化,但不会通知子组件。 console.log(open)
仍然是false
。
我正在使用 Vue.js 版本 3 和 API。
您不需要使用ref
进行分配,您可以在props.open
中使用props.open 。
<template>
<div v-if="props.open">Dies ist ein Test.</div>
</template>
<script setup>
import { ref, defineProps } from 'vue'
const props = defineProps(['open'])
</script>
但是,如果你想计算这个道具,你可以使用computed
作为Boussadjra Brahim的第一个答案。
Child 组件中存在一些冲突,您有一个名为open
的道具和一个具有相同名称的 ref 属性,在这种情况下,它优先考虑 ref ,将另一个属性重命名为isOpen
并将其定义为计算:
<template>
<div v-if="isOpen">Dies ist ein Test.</div>
</template>
<script setup>
import { computed } from 'vue'
const props = defineProps(['open'])
const isOpen = computed(()=>props.open)
</script>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.