@AFI19

Как получить данные перед рендерингом компонента?

Есть компонент, который выводит результаты в виде таблицы. Проблема в том, что сначала рендерится пустая таблица, а уже после добавляются данные. Как сделать вывод таблицы после получения данных?
<template>
  <div>
    <!-- <p>Count: {{ brandsCounter }}</p> -->
    <el-table :data="getAllBrands">
      <el-table-column prop="id" label="ID"></el-table-column>
      <el-table-column prop="name" label="Name"></el-table-column>
      <el-table-column>
        <template slot-scope="props">
          <el-button type="danger" icon="el-icon-delete" @click="deleteBrand(props.row.id)"></el-button>
        </template>
      </el-table-column>
    </el-table>
  </div>
</template>

    <script>
import { mapGetters, mapActions } from "vuex";
export default {
  name: "BrandsTable",
  computed: {
    ...mapGetters(["getAllBrands"])
  },
  methods: {
    ...mapActions(["requestBrands", "deleteBrand"])
  },
  mounted: function() {
    this.requestBrands();
  }
};
</script>

Vuex
import store from "..";

export default {
  state: {
    all: []
  },
  getters: {
    getAllBrands: state => {
      return state.all;
    }
  },
  mutations: {
    setBrands(state, brands) {
      state.all = brands;
    },
    deleteBrandFromList(state, brandId) {
      state.all = state.all.filter(b => b.id !== brandId);
    }
  },
  actions: {
    async requestBrands(ctx) {
      await axios
        .get("/admin/brands", {
          _token: store.state.token
        })
        .then(function(response) {
          ctx.commit("setBrands", response.data.brands);
        })
        .catch(function(error) {
          console.log(error);
        });
    },
    async deleteBrand(ctx, id) {
      await axios
        .post("/admin/brands/" + id, {
          _token: store.state.token,
          _method: "DELETE"
        })
        .then(function() {
          ctx.commit("deleteBrandFromList", id);
        })
        .catch(function(error) {
          console.log(error);
        });
    }
  }
};
  • Вопрос задан
  • 103 просмотра
Пригласить эксперта
Ответы на вопрос 2
//
<ElTable
  v-if="getAllBrands.length > 0"
  :data="getAllBrands"
>
//
Ответ написан
Комментировать
bootd
@bootd
Гугли и ты откроешь врата знаний!
<el-table
  v-if="getAllBrands.length"
  :data="getAllBrands"
>
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы