@Arrow_MGD

Почему не срабатывает реактивность Pinia?

Почему у меня не обновляются данные, когда я в Network отключаю подключение Wifi?

Вот мой компонент:

<template>
  {{ this.status }}
  <router-view v-slot="{ Component }">
    <transition name="slide">
      <component :is="Component" />
    </transition>
  </router-view>
</template>

<script>
import { useUserStore } from "@/stores/UserStore.js";
import { mapState } from "pinia";

export default {
  name: "App",
  computed: {
    ...mapState(useUserStore, ["status"]),
  },
  mounted() {
    window.addEventListener("online", useUserStore().setStatus(true));
    window.addEventListener("offline", useUserStore().setStatus(false));
    // window.addEventListener("offline", () => {
    //   useUserStore().setStatus(false);
    //   console.log(useUserStore().status);
    // });
    window.addEventListener("load", () => {
      if (navigator.onLine) {
        useUserStore().setStatus(true);
      } else {
        useUserStore().setStatus(false);
      }
    });
  },
};
</script>

Вот мой стор Pinia:

import { defineStore } from "pinia";

export const useUserStore = defineStore("UserStore", {
  state() {
    return {
      user: undefined,
      status: null,
    };
  },
  getters: {
    getStatus() {
      return this.status;
    },
  },
  actions: {
    getUser(payload) {
      this.user = payload;
    },
    setStatus(payload) {
      this.status = payload;
    },
  },
});

При этом если я меняю в компоненте

window.addEventListener("offline", useUserStore().setStatus(false));
    // window.addEventListener("offline", () => {
    //   useUserStore().setStatus(false);
    //   console.log(useUserStore().status);
    // });

меняю комментарий местами, то на отключение "интернета", this.status отражает false. Как-будто бы для того, чтобы state обновился надо его вызвать (в данном случае через консоль просто). И так у меня вообще во многих компонентах. Как я понимаю само событие offline статут всё таки меняет, но вот реактивно на странице он не отображается... В чем мое недопонимание? Пробовал и без mapState, просто через computed. Там тоже нет обновления...
  • Вопрос задан
  • 353 просмотра
Решения вопроса 1
yarkov
@yarkov Куратор тега Vue.js
Помог ответ? Отметь решением.
addEventListener принимает функцию вторым аргументом, а у вас там что?

window.addEventListener("offline", () => useUserStore().setStatus(false))
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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