Skip to content Skip to sidebar Skip to footer

Vue 3 Component Reset Does Not Reset Reactive() Object Data

Using Vue 3, typescript, composition API & FireStore data, when attempting to reset the form by key value change, all reactive() data resets to its original stored value except

Solution 1:

to get access to emit you need to do

setup(props, { emit }) {

Minimal Reproduction

Parent.vue

<template>
  <div class="">{{formKey}}</div>
  <Child
    :key="formKey"
    @reset="formReset"
  />
</template>

<script lang="ts">
import { ref, defineComponent } from "vue";
import Child from "./Child.vue";
export default defineComponent({
  components: {
    Child,
  },
  setup() {
    const formKey = ref(0);
    const formReset = () => formKey.value++;
    return { formKey, formReset };
  },
});
</script>

Child.vue

<template>
  <form>
    <input type="text" v-model="name" />
    <input type="text" v-model="address.street" />
    <input type="text" v-model="address.city" />
    <input type="text" v-model="phone" />
    <div>Name {{name}} </div>
    <div>Street {{address.street}} </div>
    <div>City {{address.city}} </div>
    <div>Phone {{phone}} </div>
    <button @click.prevent="reset">Reset</button>
  </form>
</template>

<script lang="ts">
import { defineComponent, toRefs, reactive } from "vue";
export default defineComponent({
  setup(props, { emit }) {
    const formData = reactive({
      name: "",
      address: {
        street: "",
        city: "",
      },
      phone: "",
    });
    const reset = () => emit("reset");
    return { ...toRefs(formData), reset };
  },
});
</script>

enter image description here

Reset

enter image description here


Post a Comment for "Vue 3 Component Reset Does Not Reset Reactive() Object Data"