проблема с медленным получением данных из API для просмотра вью - PullRequest
0 голосов
/ 22 апреля 2019

У меня проблема с очень медленным получением данных из API-интерфейса laravel для просмотра в vue. Я сделал учебник, в котором у меня есть:

import axios from 'axios';

const client = axios.create({
    baseURL: '/api',
});

export default {
    all(params) {
        return client.get('users', params);
    },
    find(id) {
        return client.get(`users/${id}`);
    },
    update(id, data) {
        return client.put(`users/${id}`, data);
    },
    delete(id) {
        return client.delete(`users/${id}`);
    },
};

<script>
import api from "../api/users";

export default {
  data() {
    return {
      message: null,
      loaded: false,
      saving: false,
      user: {
        id: null,
        name: "",
        email: ""
      }
    };
  },
  methods: {
    onDelete() {
      this.saving = true;
      api.delete(this.user.id).then(response => {
        this.message = "User Deleted";
        setTimeout(() => this.$router.push({ name: "users.index" }), 1000);
      });
    },
    onSubmit(event) {
      this.saving = true;

      api
        .update(this.user.id, {
          name: this.user.name,
          email: this.user.email
        })
        .then(response => {
          this.message = "User updated";
          setTimeout(() => (this.message = null), 10000);
          this.user = response.data.data;
        })
        .catch(error => {
          console.log(error);
        })
        .then(_ => (this.saving = false));
    }
  },
  created() {
    api.find(this.$route.params.id).then(response => {
      this.loaded = true;
      this.user = response.data.data;
    });
  }
};
</script>

Загрузка данных из API-интерфейса происходит очень медленно. Сначала отображаются пустые входные данные, а послеНекоторое время я вижу данные, и если я открываю данные API из laravel, я сразу же вижу данные, поэтому мой вопрос: как это ускорить?Или, может, я что-то не так сделал?

1 Ответ

1 голос
/ 22 апреля 2019

Всякий раз, когда я использую API с Vue, я обычно делаю большинство своих вызовов API, прежде чем открыть Vue, а затем передать его следующим образом.

<vue-component :user="'{!! $user_data !!}'"></vue-component>

Но если вам придется сделать это в компоненте Vue, я не уверен, покажет ли это улучшение по сравнению с вашим методом, но я бы настроил его с помощью «смонтированного» следующим образом.

export default {
    mounted() {
        api.find(this.$route.params.id).then(response => {
          this.loaded = true;
          this.user = response.data.data;
        });
    }
}

Также вот хорошее руководство по Axios и тому, как использовать HTTP Requets с Vue.

Надеюсь, это ответило на ваш вопрос, удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...