• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Evaluaciones
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

172
Vistas
How to reload the data in parent's page after deletion on component without refresh the actual page (Vue 2)?

So, I have a parent page which contains a component card. Inside the component card I have a delete button to delete the data based on that component Id. I use Axios to make delete request, but the problem is after I success make the deletion, that component won't disappear since the data on the client still not reloading.

I know I can reload the data by refreshing the page, but I don't wanna do that. Is there any way I can reload the data on the parent's page from component? Here's some snippets code:

Parent's page, this is where I put the component:

<div class="justify-center flex flex-row" v-for="(savedClass, index) in savedClasses" :key="index">
              <saved-class-card
              :courseId="savedClass.id"
              :title="savedClass.course.title"
              :author="savedClass.course.author"
              :slug="savedClass.course.slug"
              :cover="savedClass.course.cover.url"
              >
              </saved-class-card>
</div>

Then the component:

<template>
  <div class="w-full inline-block ptsans-font mt-3 font-pt-sans">
    <!-- delete button -->
        <div class="flex flex-row justify-end h-auto w-24 rounded-lg ml-6 px-4 py-1 cursor-pointer" @click="deleteSavedCourse">
          <div class="mr-1">
              <p>DELETE</p>
          </div>
          <div class="">
              <p>X</p>
          </div>
        </div>
  </div>
</template>

<script>
import moment from "moment";
import "moment/locale/id";
import axios from "axios";

export default {
  name: "SavedClassCard",
  props: ["cover", "title", "author", "slug", "status", "courseId"],
  methods: {
    async deleteSavedCourse() {
        const request = `https:xxxxxxx-xxx/${this.courseId}`;
        const deleteRequest = await axios.delete(request);
        if (deleteRequest.status === 200) {
            console.log("data successfully deleted");
        } else {
            console.log(deleteRequest);
        }
    }
  },
  computed: {
    coverFull() {
      return `https:xxxxxxx-xxx${this.cover}`;
    }
  },
};
</script>
almost 3 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

You could try to emit an event in your deleteSavedCourse method and listen to that event in your parent component.

methods: {
    async deleteSavedCourse() {
        const request = `https:xxxxxxx-xxx/${this.courseId}`;
        const deleteRequest = await axios.delete(request);
        if (deleteRequest.status === 200) {
            console.log("data successfully deleted");
            this.$emit('deleted');
        } else {
            console.log(deleteRequest);
        }
    }
  },
<div class="justify-center flex flex-row" v-for="(savedClass, index) in savedClasses" :key="index">
              <saved-class-card
              :courseId="savedClass.id"
              :title="savedClass.course.title"
              :author="savedClass.course.author"
              :slug="savedClass.course.slug"
              :cover="savedClass.course.cover.url"
              @deleted="handleReloadingOfData()"
              >
              </saved-class-card>
</div>

You can read more about custom events here

almost 3 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda