【发布时间】:2021-12-23 07:59:41
【问题描述】:
我通过反向代理服务器进入我的网站,该服务器将令牌传递给我的网站。我希望每次去不同的路线时都能够将该令牌强制到查询字符串上,并且我希望能够做到这一点,而无需将查询字符串放在我可能拥有的任何按钮的每个“to”上。这样,如果我的用户重新加载页面,他们就不会丢失令牌。
我试图在我的 default.vue 页面中执行此操作,以便无论我在哪个页面上,它都会将查询字符串推送到路由中。我面临的问题是,当用户单击按钮将他们带到路线时,这很有效,但是当双击按钮时,查询字符串不会被推送到路线上。
这是我的 default.vue 和一个页面更改按钮的片段。
....default.vue.....
<template>
<v-app>
<banner :text="My Banner Text"/>
<v-container fluid px-0 py-0>
<v-main>
<nuxt />
<v-main>
</v-container>
</v-app>
</template>
<script>
import banner from '@/components/layouts/default/banner'
export default {
components: {
banner
},
data() => {
return {
landingRoute: null,
}
},
async fetch(){
if(this.isEmpty(this.$route.query)){
const landingkey = this.landingRoute
this.$router.push({name: this.$router.name, query: {info: landingKey}})
},
watch:{
'$route.query': '$fetch'
},
mounted(){
this.landingRoute = this.$route.query.info
},
methods: {
isEmpty(json){
return Object.keys(json).length === 0
}
}
}
</script>
...... mainNav.vue .......
这是相关的部分
<v-btn
to="/request"
><span>Request</span>
</v-btn>
【问题讨论】:
-
不确定整个上下文以及它是否真的相关,但您的问题主要是“当按钮被双击时,我的路由没有更新,而单击一次时它正在工作”,对吗?如果您查看 Vuetify 的文档(我假设您正在使用此文档):vuetifyjs.com/en/api/v-btn/#props 您可以看到传递
to属性实际上是将其转换为路由器链接,因此双击可能不起作用。您是否检查了您的 Vue 开发工具以实际看到那里发出的所有事件?另外,您在使用@click时是否尝试过常规方法? -
路由会随着我的页面更改而更改,但是双击时的路由不会在我的异步获取方法中将查询字符串推送到它上面。如果这是 Vuetify 的问题,我可以实施哪种解决方法?
-
就我的 devtools 中的事件而言,我看到了一次点击、3 个路由更改事件,然后是单独的点击。在我的路由更改事件中,我的有效负载是一个数组,具有“/request”的一个是完整路径,一个具有“/?info=xyz”作为完整路径的数组
-
同样在这里,您可能需要添加a debounce 以不向您的实际事件发送垃圾邮件,但只发出一个事件。老实说,我什至没有看到双击的用例。是更多的错误还是更多的功能?
-
这是一个错误,当我单击查询参数时,会添加,当我双击时不会。据我所知,这与您提到的 vuetify 在 to= 上的行为方式有关。另外我不熟悉 debounce,debounce 的目的是什么?