我正在使用Nuxt.js,并且有一个在
下定义的动态页面pages/post/_slug.vue
所以,当我访问页面网址时,比如http://localhost:3000/post/hello-world,我怎样才能在页面中读取这个slug参数值。
目前我正在使用asyncData进行调整,如下所示:
asyncData ({ params }) {
// called every time before loading the component
return {
slug: params.slug
}
}
这很好用,但我认为这不是最好的方法,应该有更好的方法让参数可用于页面。任何帮助表示赞赏!
答案 0 :(得分:5)
要从URL读取参数,您应该在Nuxt中使用这种方式:
this.$route.query.<name_of_your_parameter_in_url>
例如
URL:https://example.com/example/?token=QWERTYUASDFGH
使用此行代码,您可以阅读token
:
this.$route.query.token
并给您QWERTYUASDFGH
。
答案 1 :(得分:4)
在页面Vue文件中,使用它来获取路由对象:
this.$route
像这样:
<script>
export default {
mounted() {
console.log(this.$route.fullpath);
}
};
</script>
URL路径参数位于route.params下,就像您遇到的情况route.params.slug
<script>
export default {
mounted() {
console.log(this.$route.params.slug);
}
};
</script>
仅在客户端运行vue moute挂钩,当您想在服务器上获取参数时,可以使用asyncData方法:
<script>
export default {
asyncData({route, params}) {
//use route
console.log(route.params.slug)
//directly use params
console.log(params.slug)
}
};
</script>
如果您只想在服务器上运行代码:
<script>
export default {
asyncData({route, params}) {
if (process.server) {
console.log(route.params.slug)
}
}
};
</script>
如果您不需要服务器上的parms信息,我想您就不需要asyncData方法。
答案 2 :(得分:2)
只需访问路由参数
供全球使用:
window。$ nuxt._route.params
用于页面/组件/布局等下的本地使用
this。$ nuxt._route.params
答案 3 :(得分:1)
Nuxt文档维护得很好,并且根据https://nuxtjs.org/api/context/,asyncData公开了API以访问各种路由器和服务器功能。 为了进一步澄清您可以在Nuxtjs门户上查看官方示例。 https://nuxtjs.org/examples/custom-routes
答案 4 :(得分:0)
据我所知,这已经是最好的方法,即使不是唯一的一种方法。但是我可以建议一种稍微不同的方法,也许适合您的需求。 使用asyncData
方法从服务器检索数据,而不是在您的VM上放置参数,然后再处理(如果是这种情况)。然后,您可以处理结果< / strong>表示逻辑中的数据,而不是任何类型的 request 。另一方面,如果您不想将任何内容传递给 VM ,也可以使用,获取,或者根据需要使用中间件。 >
答案 5 :(得分:0)
如果您想在apollo
智能查询中访问路线信息,其他答案就足够了:
apollo: {
items: {
query: jobsBy,
variables() {
return {
clientId: this.$route.query.id
}
},
}
}
答案 6 :(得分:0)
如果您处于商店上下文中(例如actions.js),则可以访问查询参数,如下所示:
this.$router.currentRoute.query['param_name']
答案 7 :(得分:-1)
对我来说最好的方法是:
async asyncData(context){
const query_params=context.route.query;
}