Задать вопрос
@Judje_1337

Почем компонент vue не берет значение из стора pinia?

Есть стор pinia
import { defineStore } from "pinia";
import axios, { AxiosError } from "axios";
import { ref } from "vue";
export interface IPizza {
  id: number;
  imageUrl: string;
  title: string;
  types: number[];
  sizes: number[];
  price: number;
  category: number;
  rating: number;
}

export const usePizzaStore = defineStore("usePizzaStore", () => {
  let loading = ref<boolean>(true);
  let data = ref<IPizza[] | null>(null);
  let error = ref<AxiosError | null>(null);
  async function fetchData(url: string): Promise<void> {
    await axios
      .get(url)
      .then((response) => {
        data.value = response.data;
      })
      .catch((e: AxiosError) => {
        error.value = e;
      })
      .finally(() => {
        loading.value = false;
      });
  }

  return { fetchData, loading, data, error };
});

И компонент
<script setup lang="ts">
import { onMounted } from "vue";
import { usePizzaStore } from "src/entities/pizza";

const store = usePizzaStore();
const { data, fetchData } = store;
onMounted(() => {
  fetchData("http://localhost:3000/pizzas");
  console.log("mount");
  console.log(data); // null
});
</script>

<template>
  <p class="font-bold text-[32px]">Все пиццы</p>
  <div class="">
    <div class="" v-for="pizza in data" :key="pizza.id">
      {{ pizza.price }}
    </div>
  </div>
</template>

Я хочю чтоб при монтировании компонента я мог взять data и на его основе отрисовать список, но он равен null. При этом во vue devtools видно, что data заполнен.
6697d5f36e421387707746.png
  • Вопрос задан
  • 119 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
Fragster
@Fragster
помогло? отметь решением!
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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