来自路由器参数的无效道具类型,预期数量为字符串

时间:2018-07-19 08:40:58

标签: vuejs2 vue-router

我正在尝试从URL收集id值。

以前,我在this帖子中寻求帮助。

在路由器文件的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”的类型检查失败。预期数字,为String。

1 个答案:

答案 0 :(得分:8)

这是使用Function mode将道具传递给零件的用例:

  

您可以创建一个返回道具的函数。这样,您就可以将参数转换为其他类型,将静态值与基于路由的值结合起来,等等。

在这种情况下,您可以将函数传递给props: true选项,而不是使用props指定route选项:

routes = [{
  path: '/word/:id',
  component: Word,
  props: castRouteParams
}];

function castRouteParams(route) {
  return {
    id: Number(route.params.id),
  };
}

实时示例:https://codesandbox.io/s/8kyyw9w26l(单击“转到测试/ 3”链接)