在使用vue3时,发现this.$router.push(‘/’)出现问题,提示此容器隐藏了 “this” 的外部值。
百度了许多,都没发现解决方法,突然想到去官网看看,发现解决方法。
主要的问题点是:
在 setup 中访问路由和当前路由
因为我们在 setup 里面没有访问 this,所以我们不能再直接访问 this. r o u t e r 或 t h i s . router 或 this. router或this.route。作为替代,我们使用 useRouter 函数:
import { useRouter, useRoute } from 'vue-router'
export default {
setup() {
const router = useRouter()
const route = useRoute()
function pushWithQuery(query) {
router.push({
name: 'search',
query: {
...route.query,
},
})
}
},
}