Vue-router使用router-link跳转时报Missing required param "id"错误求解
问题原因解释
- 你的
post数据是异步获取的(通常是从Laravel后端接口请求文章详情),组件首次渲染的时候,异步请求还没返回结果,post对象还没有被正确赋值,此时post.category_id的值是undefined。 - 你在路由规则里定义的
categories.show路由明确要求携带必填的id参数,vue-router在渲染<router-link>的时候会校验参数是否完整,发现id为undefined不符合要求,就会抛出「Missing required param "id"」的错误。 - 你添加
v-if判断之后,只有当post.category_id确实存在的时候,才会渲染<router-link>组件,此时构造路由参数的id是有有效值的,自然就不会触发参数校验错误,功能也能正常运行。
补充优化建议:如果不想用v-if,也可以在初始化
post数据的时候给它设置默认结构,比如const post = ref({ category_id: 0, category_name: '' }),或者给路由参数加兜底值params: { id: post.category_id ?? 0 },不过更推荐你当前的v-if写法,没有分类id的时候这个跳转链接本身也没有展示的必要。
内容的提问来源于stack exchange,提问作者user16806454
相关产品推荐
相关产品推荐

