Vuejs: дважды вызвать хук created()

Я создал хук для перезагрузки моих данных из базы данных одним нажатием кнопки:

<template>
  <base-projects :projects = "projects" />
</template>

<script>
import { mapGetters } from 'vuex';
import Projects from './Projects';
import projectService from '@/services/projectService';

export default {
  components: { Projects },
  computed: {
    ...mapGetters([
      'projects'
    ])
  },
  created() {
    projectService.getAllCompanyProjects();
  },

};
</script>

Так что это работает нормально, но только если я нажимаю в первый раз. Если я нажму второй раз, он не перезагрузит данные во второй раз. Кто-нибудь знает, как решить эту проблему?

Заранее спасибо!

created хук вызывается один раз при создании компонента. Если вы хотите перезагрузить свои данные по клику, вы должны вызвать компонент method по клику. Не могли бы вы предоставить код компонента, чтобы решить эту проблему?
charlycou 25.02.2019 14:47

@charlycou можно ли уничтожить хук в созданном хуке?

max 25.02.2019 14:50

Почему вы хотите уничтожить его. Если вам нужно уничтожить этот хук, это, вероятно, потому, что он вам не нужен, поскольку он запускается один раз при создании вашего компонента. Отредактируйте свой пост с помощью некоторого кода или предоставьте песочницу, чтобы воспроизвести вашу проблему.

charlycou 25.02.2019 14:55

@charlycou я обновил код

max 25.02.2019 15:00

благодаря. Я разместил ответ. Скажи мне, если это поможет.

charlycou 25.02.2019 15:20
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
5
1 938
1

Ответы 1

Я предполагаю, что ваши данные перезагружаются из вашей базы данных с помощью функции projectService.getAllCompanyProjects();. Поскольку вы хотите перезагрузить данные по «щелчку», я предлагаю вам привязать событие «щелчок» к одному из методов вашего компонента.

<template>
  <base-projects :projects = "projects" @click.native = "reloadData" />
</template>

<script>
import { mapGetters } from 'vuex';
import Projects from './Projects';
import projectService from '@/services/projectService';

export default {
  components: { Projects },
  computed: {
    ...mapGetters([
      'projects'
    ])
  },
  methods: {
    reloadData() {
      projectService.getAllCompanyProjects();
    }
  }    
};
</script>

Метод reloadData будет запущен «щелчком» по DOM вашего компонента base-projects.

компонент base-projects не является кнопкой, поэтому метод не вызывается

max 25.02.2019 15:40

Я обновил код, используя .native. Если это не работает для вашего варианта использования, вам нужно обновить свой пост с помощью компонента, из которого должно быть запущено ваше событие.

charlycou 25.02.2019 15:47

Другие вопросы по теме