Доступ к запрашиваемым данным из компонента Vue с помощью Gridsome

Я новичок в Gridsome, а также в GraphQL. Однако я не использую GraphQL для этого проекта. У меня просто есть настройка проекта Gridsome и некоторые данные JSON, и я пытаюсь определить их глобально, чтобы я мог получить к ним доступ со всех моих страниц Vue и компонентов. (Я знаю, что это может быть импортировано в компонент, но я ищу более "Гридсом способ" сделать это). Я сделал следующие шаги для достижения этой цели:

1) Создана папка для файла Json: data/myJson.json, Json-файл:

{
    "startPage": {
        "title": "Welcher Typ bist Du?",
        "subtitle": "Los geht's beim lustigen Datev-Quiz!",
        "startButton": "Quiz starten"
    }
}

2) Мой gridsome.server.js выглядит так:

var myJson = require('./data/questions.json');
module.exports = function (api) {
  api.loadSource(store => {
    const startPage = store.addContentType({
      typeName: 'StartPage'
    });

    startPage.addNode({
      title: 'StartPageInfo',
      fields: {
        title: myJson.startPage.title,
        subtitle: myJson.startPage.subtitle,
        startButton: myJson.startPage.startButton
      }
    })
  })
}

3) И я запрашиваю эти данные в index.vue стр.

Я могу получить доступ к этим данным в моем шаблоне. Так что, если я сделаю что-то вроде этого

<h4 v-html="$page.allStartPage.edges[0].node.fields"></h4>

тогда это прекрасно работает.

Моя проблема, однако, в том, что я не могу получить доступ к этим запрашиваемым данным в Vue data объект или внутри методов и так далее. Так что-то вроде этого:

data() {
  retrun {
    START_PAGE_END_POINT: this.$page.allStartPage.edges[0].node.fields
  }
}

дает мне сообщение об ошибке и говорит, что $page не определено.

Есть мысли, что я делаю не так?

1 ответ

Решение

Итак, я понял это. Я смог получить доступ this.$page переменная в created() Крюк жизненного цикла Vue, а не в data сам объект.

Код выглядит так. Сначала я определяю переменные с начальным значением null в data объект:

data() {
      return {
        START_PAGE_END_POINT: null,

        title: null,
        subtitle: null,
        startButton: null
      }
    }

Тогда в created() Хук жизненного цикла Я присваиваю правильные значения этим переменным:

created() {
      if (this.$page) {
        this.START_PAGE_END_POINT = this.$page.allStartPage.edges[0].node.fields;

        this.title = this.START_PAGE_END_POINT.title,
        this.subtitle = this.START_PAGE_END_POINT.subtitle,
        this.startButton = this.START_PAGE_END_POINT.startButton
      }
    }

Мне все еще интересно, почему невозможно получить доступ к $page переменная в data сам объект.

Другие вопросы по тегам