Всем привет, есть 10 радиобатоннов и проблема заключается в том, что при клике например по 6 радиобатонну удаляются 7, 8, 9, 10 итерации по какой-то причине, не могу понять почему. Примерное описание что делаю: есть родительский компонент -
ReviewsForm.vue
и дочерний компонент
RatingSelect.vue
. Я передаю
const rating = ref(10)
из родительского в дочерний с помощью
:rating="rating"
, в дочернем я инициализирую пропс и присваиваю его переменной
selected
здесь
const selected = ref(props.rating)
. Далее я слежу за изменениями selected с помощью watch, определяю emit и передаю родителю
rating
здесь
@setRating="rating = $event"
https://codesandbox.io/s/pedantic-thompson-hlnkbx?...
Родительский компонент:
<template>
<form>
<RatingSelect :rating="rating" @setRating="rating = $event" />
</form>
</template>
<script setup>
import { ref, watch } from "vue";
import RatingSelect from "./RatingSelect.vue";
const rating = ref(10);
watch(rating, (newValue) => {
console.log("newValue: ", newValue);
});
</script>
Дочерний компонент:
<template>
<div>
<ul class="rating">
<li v-for="n in rating" :key="`rating-${n}`">
<input
type="radio"
:id="`num${n}`"
name="rating"
:value="n"
:checked="selected === n"
v-model="selected"
/>
<label :for="`num${n}`">{{ n }}</label>
</li>
</ul>
</div>
</template>
<script setup>
import { defineProps, defineEmits, ref, watch } from "vue";
const props = defineProps({
rating: {
type: Number,
required: true,
},
});
const selected = ref(props.rating);
const emit = defineEmits(["setRating"]);
watch(selected, (newValue) => {
emit("setRating", newValue);
});
</script>