Skip to content

Migrar Componente FormTask.vue

Llegado a este punto ya deberíamos estar algo familiarizados con la Composition API y el gancho setup().

Para el componente FormTask.vue, tenga en cuenta que, además de recibir el objeto props, también emite un evento. Dicho evento emit deberá ser pasado al gancho setup() a través del contexto.

📃./components/FormTask.vue

vue
<script lang="ts">
import { defineComponent, ref } from 'vue'
import type { Task } from '@/types'

export default defineComponent({
  props: {
    task: Object    
  },
  emits: ['submit'],
  setup(props, ctx) {
    const form = ref(props.task as Task)
    const submit = () => ctx.emit('submit', form.value )

    return {
      form,
      submit
    }
  }
})
</script>

<template>
  <form @submit.prevent="submit">
    <div class="m-2">
      <label>Title</label>
      <input type="text" v-model="form.title">
    </div>

   <div class="m-4">
      <label>Description</label>
      <textarea v-model="form.description"></textarea>
    </div>

    <div class="m-4">
      <label>Done</label>
      <input type="checkbox" v-model="form.done"/>
    </div>

    <button type="submit" class="btn btn-primary m-2">
      Save
    </button>
  </form>
</template>

Tenga en cuenta que el template no sufre ninguna modificación.