老师,关于useRouter或useRoute在setup中使用位置问题
来源:10-5 搜索布局及路由跳转(2)

慕容6332229
2021-04-28
老师,在setup函数中使用const router = useRouter(),然后用router做跳转,
发现如果写在setup中定义的function中,却报错,提示router无效,router的back函数 undefine。见如下代码:
// 下面代码段中,router的定义,分别写在两处。第一处可以,第二处不行。这里只是做示例,运行代码时,只保留一处定义。
export default {
name: 'Shop',
setup () {
const router = useRouter() //router写在此处OK。但写入其下的箭头函数内就不行
const handleBackClick = () => {
const router = useRouter() //router写在此处,就不行。运行会报错
router.back()
}
return { handleBackClick }
}
}
开始以为是不能写在箭头函数中,但实际上,如果把handleBackClick() 方法写在export default 外面,即写在最外面的全局,再在setup中引入,是可以的,这也是在箭头函数中呀,是可以的呀。所以不是这个原因。所以想请问老师,是如何理解这个问题。以下也在箭头函数中,却可以。
以下可以:
// 点击回退逻辑
const useBackRouterEffect = () => {
const router = useRouter() // 此处也写在箭头函数中,再在下方setup中使用,却可以。
const handleBackClick = () => {
router.back()
}
return handleBackClick
}
export default {
name: 'Shop',
setup () {
const handleBackClick = useBackRouterEffect() //可以
return { handleBackClick }
}
}
所以,请老师解答我的疑问,一直不明白为何放在setup中再写的函数中就不行?但是如果写在外面引入,却又可以。因为实际写代码时,在setup中经常写funtion箭头函数,就经常这么写,浏览器上执行就会报错,但始终不明白也不理解为何这样写,就router定义无效!求解!
报错截图如下:
写回答
1回答
-
报错的内容截图给我看一下
032021-05-10
相似问题
setup的外部使用
回答 1
关于精度丢失问题
回答 1