Доступ к запрошенным данным из компонента 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 не определен.

Любые мысли, что я делаю неправильно?

🤔 А знаете ли вы, что...
Vue.js обеспечивает легкую интеграцию с существующими проектами и библиотеками.


6
1 347
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.