typescript - Hur man antyder för en reaktiv variabel att den har ändrats?
Jag har ett objekt "Employee".
export interface Employee {
name: string;
age: number;
}
För att ändra det utvecklade jag komponenten "Min Redigerare".
<script lang="ts" setup>
import { ref } from "vue";
import { Employee } from "./DataType";
import MyEditor from "./MyEditor.vue";
const myData = ref<Employee>({ name: "Mike", age: 31 });
</script>
<template>
{{ myData }}
<br />
<MyEditor v-model:data="myData" />
<br />
<MyEditor :data="myData" @update:data="myData = Object.assign({}, $event)" />
</template>
Där ändrar jag värdena i fälten, och sedan genom att trycka på ok-knappen skickar jag de ändrade uppgifterna till föräldern.
<script lang="ts" setup>
import { Employee } from "./DataType";
const props = defineProps<{
data: Employee;
}>();
const emit = defineEmits<{
(e: "update:data", value: Employee): void;
}>();
const clonedData = Object.assign({}, props.data);
</script>
<template>
<input v-model="clonedData.name" />
<br />
<button @click="emit('update:data', clonedData)">Ok</button>
</template>
I en föräldrakomponent kommer reaktivitet bara att fungera om objektet självt ändras, inte dess egenskaper. det vill säga, istället för
v-model:data="myData"
måste göra
:data="myData" @update:data="myData=Object.assign({}, $event)"
Och detta är inte särskilt estetiskt tilltalande, finns det andra alternativ?
lekplats