Vue:如何在每次组件递归执行时捕获一个值?

问题描述 投票:0回答:1

要求:我想在每次组件递归执行时将对象中的值捕获到数组中。

问题陈述:当组件递归执行时,我可以将组件每次迭代的值推入数组,但每次组件启动时数据属性(数组)都会重置。

我想从每个组件执行中捕获

age
属性的值,并将其存储到子组件本身的数组中。

到目前为止我尝试过什么?

我尝试在从子组件到父组件的每个组件执行中

emit
age
,但它在父组件中仅捕获一次(第一次迭代)。

在子组件中:

const emit = defineEmits(['emitAge']);

.
.
.

emit('emitAge', <age>)

在父组件中:

<child-component @emit-age="captureAge"/>

.
.
.

const captureAge = (val: number) => {
  console.log(val); // It only logs first iteration result, not all iterations
}

我正在使用带有 Composition API 的 Vue 3 (

<script setup>
)。

我可以尝试达到要求的最佳解决方案吗?

javascript typescript vue.js vuejs3 vue-component
1个回答
0
投票

您还需要为孩子添加

captureAge

<script setup>
 import child from './Child.vue'
 const props = defineProps({age: Number})
 const emit = defineEmits(['emitAge']);

 emit('emitAge', props.age);
 const captureAge = (val) => {
   emit('emitAge', val);
 }
</script>

<template >
  <div v-if="age<5" >
    (from child): {{age}}
    <child
         :age="age+1"
         @emit-age="captureAge"
        ></child>
  </div>
</template>

在此处工作游乐场 - 我不知道如何在游乐场上获取控制台输出,所以我只是将结果添加到

msg

© www.soinside.com 2019 - 2024. All rights reserved.