vuejs2 - 来自路由器参数的无效道具类型,预期数字得到字符串
问题描述
我正在尝试id
从 URL 收集价值。
以前我在这篇文章中寻求帮助。
在我index.js
的路由器文件中,我有以下代码:
{ path: '/word/:id',
name: 'word',
component: Word,
props: true,
},
在我的组件中,我有以下代码:
<script>
export default {
props: {
id: Number,
},
created() {
this.routeChanged();
},
watch: {
'id': 'routeChanged',
},
methods: {
routeChanged () {
console.log(this.id);
},
},
};
</script>
我收到以下错误:
[Vue 警告]:无效的道具:道具“id”的类型检查失败。预期数字,得到字符串。
解决方案
这就是使用Function mode将 Props 传递给路由组件的用例:
您可以创建一个返回道具的函数。这允许您将参数转换为其他类型,将静态值与基于路由的值组合等。
props: true
在您的情况下,您可以将一个函数传递给该选项,而不是使用 指定路由props
选项:
routes = [{
path: '/word/:id',
component: Word,
props: castRouteParams
}];
function castRouteParams(route) {
return {
id: Number(route.params.id),
};
}
现场示例:https ://codesandbox.io/s/8kyyw9w26l (点击“Go to Test/3”链接)
推荐阅读
- typescript - 断言保护子句也可以返回值吗?
- react-native - 错误:未定义无法解析模块`@react-navigation/bottom-tabs`
- javascript - 对象内部的数组未正确删除
- python - Discord 机器人不创建频道
- javascript - 为什么我的 jqueryUI 自动完成显示在左上角?
- javascript - TypeScript 无法在扩展语法函数调用中推断数组类型
- python - 获取类中的鼠标点击坐标 - python
- jsp - 如何刷新我在 ServletContextListener 中设置的 servlet 上下文变量?
- excel - 用于图表格式的 VBA For 循环
- c++ - vector.size() 一直返回 0