【发布时间】:2021-08-24 11:54:34
【问题描述】:
我想从 nuxt.js 生成的静态页面上的 graqphql 端点中挑选一些额外的数据。我该怎么做(哪个钩子是怎么用的)?
编辑,更具体地说: 我有以下组件,它应该获取每日准确的汇率。这不一定在页面加载时完成。所以我想在页面加载后选择它。这些页面是生成的静态页面,并有一个描述组件,该组件具有此组件:
<template>
<strong :v-if="exchangerate.rate">
/ {{ exchangerate.currency }} {{ Math.round(price * exchangerate.rate).toLocaleString('en-US') }}
</strong>
</template>
<script>
import { gql } from 'graphql-tag'
export default ({
fetchOnServer: false,
props: {
price: {
type: Number,
default: null
},
currency: {
type: String,
default: 'USD'
}
},
data () {
return {
exchangerate: {}
}
},
async fetch ({ app }) {
await app.apolloProvider.defaultClient.query({
query: gql`
query getSpecificRateQuery($where: JSON) {
exchangerates(where: $where) {
currency
rate
updated_at
}
}
`,
variables: {
where: { currency: this.currency }
}
}).then(({ data }) => {
const exchangerate = {}
exchangerate.currency = data.exchangerates[0].currency
exchangerate.rate = data.exchangerates[0].rate
return { exchangerate }
})
}
})
</script>
fetch() 似乎不起作用。页面显示“NaN”。
【问题讨论】:
-
如果问题是如何只在客户端做某事,你可以使用 if(process.client){ ... }
-
这个问题太模糊了。
fetch()hook 或任何其他你已经在使用的。 -
我做了一个更具体的编辑。
-
我添加了这个来调用 fetch,但是得到了错误'this.$fetch is not a function':
mounted () { this.fetchRate() }, methods: { fetchRate () { this.$fetch() } }