@molekulyarniy

Почему не работает rootState?

Имеется store с встроенным в него модулем
const counterModule = {
  namespaced: true,
  state() {
    return {
      counter: 0
    };
  },
  getters: {
    testAuth(rootState) {
      return rootState.isLoggedIn;
    }
  }
};

const store = createStore({
  modules: {
    counter: counterModule
  },
  state() {
    return {
      isLoggedIn: false
    };
  }
});


И компонент
<template>
  <p>{{ isTestAuth }}</p>
</template>

<script>
export default {
  computed: {
    isTestAuth() {
      return this.$store.getters['counter/testAuth'];
    }
  }
};
</script>

Но почему-то в компоненте не отображается содержимое . Если не использовать namespace в подключаемом модуле, то все работает правильно. В чем причина ошибки?
P.S. большая часть кода, которая не относится к теме вопроса, удалена, чтобы не создавать путаницу
  • Вопрос задан
  • 45 просмотров
Пригласить эксперта
Ответы на вопрос 3
yarkov
@yarkov Куратор тега Vue.js
Проект "Жизнь после смерти" - lifeafterdeath.ru
А с чего вы решили, что rootState идёт первым аргументом в геттере модуля? Из-за того что назвали аргумент rootState?
Читать до полного просветления.

UPD: Ну хз, у меня как обычно всё работает
Ответ написан
Fragster
@Fragster
помогло? отметь решением!
Дело в невнимательности или в непонимании того, что такое деструктурирующее присваивание
spoiler

Там на самом деле всего один параметр - объект, а все между скобок - его свойства.
4gtc4hpc8brc85oyyrb-paru0lw.png
Ответ написан
fallus
@fallus
Вот так — не надо.
Надо вот так, так, так так:

getters: {
    testAuth(state, getters, rootState) {
      return rootState.isLoggedIn; // тут возможно нужно к isLoggedIn полный путь написать, например return rootState['myStoreModule/isLoggedIn']
    }
  }


*Не бейте меня. Не надо.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы