使用 Gridsome 从 Vue 组件访问查询的数据
Access the queried data from Vue component using Gridsome
我是 Gridsome 和 GraphQL 的新手。但是我没有在这个项目中使用 GraphQL。
我只有一个 Gridsome 项目设置和一些 JSON 数据,我正在尝试全局定义它,以便我可以从我的所有 Vue 页面和组件访问它。 (我知道它可以导入到组件中,但我正在寻找更多 "Gridsome way" 这样做)。
我已完成以下步骤来实现此目的:
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 的 created()
生命周期挂钩中访问 this.$page
变量,而不是在 data
对象本身中。
代码看起来像这样。
我首先在 data
对象中定义初始值为 null
的变量:
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
}
}
我仍然很好奇为什么无法访问 data
对象本身中的 $page
变量。
我是 Gridsome 和 GraphQL 的新手。但是我没有在这个项目中使用 GraphQL。 我只有一个 Gridsome 项目设置和一些 JSON 数据,我正在尝试全局定义它,以便我可以从我的所有 Vue 页面和组件访问它。 (我知道它可以导入到组件中,但我正在寻找更多 "Gridsome way" 这样做)。 我已完成以下步骤来实现此目的:
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 的 created()
生命周期挂钩中访问 this.$page
变量,而不是在 data
对象本身中。
代码看起来像这样。
我首先在 data
对象中定义初始值为 null
的变量:
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
}
}
我仍然很好奇为什么无法访问 data
对象本身中的 $page
变量。