在用Taro做小程序开发时,页面跳转传参一直接收不到值。我用params传的参数,在目标页面用useParams()获取显示undefined,这是什么问题啊?
跳转代码是这样的:
Taro.navigateTo({
url: '/pages/detail/index',
params: {
id: 123
}
})
接收页面这么写的:
const { id } = useParams()
console.log(id) // 输出undefined
路径写对了,参数名也没错,为什么就是拿不到值?是不是路由配置哪里漏了?
params属性实际上不会自动把参数加到url里。你需要手动拼接参数到url上。正确的跳转写法应该是这样:
然后在接收页面用
getCurrentInstance().router.params.id来获取参数,比useParams()效率更高,而且更稳定。完整接收代码:
这个方案直接解决了参数传递问题,别再纠结
params了,官方文档对这块说得也不太清楚,按这个方式来准没错。接收页面用
const router = useRouter()拿到router.query.id就行,差不多就行,文档写得坑人。