刷新后参数不起作用
Params do not work after refresh
编辑:我无法获得 params.id 因为 nuxt-link 将它传递到详细信息页面。
我正在尝试使用 NuxtJS 构建博客。
这是博客详细信息页面的link。
<nuxt-link :to="{name: 'category-slug', params: { slug: slug, id: id, category: category } }">
它运行良好,但在我刷新详细信息页面后(即:tech/hello-world),它returns 无法读取 属性 'author' of null
_slug.vue
<template>
<div>
<h1>slug {{ $route.params.id }}</h1>
{{ loadedPost.author }}
</div>
</template>
<script>
import Vuex from "vuex"
import axios from "axios"
export default {
asyncData(context) {
console.log(context.params.id)
return axios.get('https://howto-a9089.firebaseio.com/posts/' + context.params.id + '.json')
.then(res => {
return {
loadedPost: res.data
}
})
},
}
</script>
我认为 asyncdata 有问题。为什么会这样?
根据 the documentation,您应该为 loadedPost
设置一个默认值,这样在加载异步数据时就不会出现这样的错误
export default {
data() {
return { loadedPost: {} }
},
asyncData({ params }) {
return axios.get(`https://howto-a9089.firebaseio.com/posts/${params.id}.json`)
.then(res => ({
loadedPost: res.data
}))
}
}
如果没有这个,当您的模板尝试显示 loadedPost.author
时,loadedPost
为空,这就是您收到该错误的原因。
感谢您的回答。这是解决方案。 _slug.vue 只有当用户点击下面的按钮时才会得到 params.id。
<nuxt-link :to="{name: 'category-slug', params: { slug: slug, id: id, category: category } }">
当用户直接输入此url或刷新页面时,不会有params.id。所以我需要通过 "slug".
获取数据
感谢 Firebase:
return axios.get('https://howto-a9089.firebaseio.com/posts.json?orderBy="slug"&equalTo=' + '"' + params.slug + '"' + '&print=pretty')
结果:我现在对 SEO 友好 url。 :)(即 url.com/tech/hello-world)
编辑:我无法获得 params.id 因为 nuxt-link 将它传递到详细信息页面。
我正在尝试使用 NuxtJS 构建博客。
这是博客详细信息页面的link。
<nuxt-link :to="{name: 'category-slug', params: { slug: slug, id: id, category: category } }">
它运行良好,但在我刷新详细信息页面后(即:tech/hello-world),它returns 无法读取 属性 'author' of null
_slug.vue
<template>
<div>
<h1>slug {{ $route.params.id }}</h1>
{{ loadedPost.author }}
</div>
</template>
<script>
import Vuex from "vuex"
import axios from "axios"
export default {
asyncData(context) {
console.log(context.params.id)
return axios.get('https://howto-a9089.firebaseio.com/posts/' + context.params.id + '.json')
.then(res => {
return {
loadedPost: res.data
}
})
},
}
</script>
我认为 asyncdata 有问题。为什么会这样?
根据 the documentation,您应该为 loadedPost
设置一个默认值,这样在加载异步数据时就不会出现这样的错误
export default {
data() {
return { loadedPost: {} }
},
asyncData({ params }) {
return axios.get(`https://howto-a9089.firebaseio.com/posts/${params.id}.json`)
.then(res => ({
loadedPost: res.data
}))
}
}
如果没有这个,当您的模板尝试显示 loadedPost.author
时,loadedPost
为空,这就是您收到该错误的原因。
感谢您的回答。这是解决方案。 _slug.vue 只有当用户点击下面的按钮时才会得到 params.id。
<nuxt-link :to="{name: 'category-slug', params: { slug: slug, id: id, category: category } }">
当用户直接输入此url或刷新页面时,不会有params.id。所以我需要通过 "slug".
获取数据感谢 Firebase:
return axios.get('https://howto-a9089.firebaseio.com/posts.json?orderBy="slug"&equalTo=' + '"' + params.slug + '"' + '&print=pretty')
结果:我现在对 SEO 友好 url。 :)(即 url.com/tech/hello-world)