vue的router-view如何传递props

vue-router的文档中指出,router-view是可以传递props的。但是在实际使用的时候,子组件总是会报Invalid prop ... got Undefined.

<!-- Parent.vue -->
<template>
    <router-view :room="room"></router-view>
</template>
<script>
    export default {
        data() {
            return {
                room: {
                    info: []
                }
            }
        }
    }
</script>

<!-- Child.vue -->
<template>
    <div v-for="k of room.info"></div>
</template>
<script>
    export default {
        data() {
            return {}
        },
        props: {
            room: {
                type: Object,
                default() {
                    return {}
                }
            }
        }
    }
</script>

查阅了别人的问题都说用Vuex,那么文档中所说的『You can pass props to it.』具体应该怎样做?

阅读 23.1k
2 个回答

修正:

OK,既然我们已经知道你之前的问题只是手误,那就往下走(之前的回复都可以作废)。

你说你做了多级路由,所以问题就在这了,从最外层的<router-view>设置props,想在下面的某一级sub-router接收,那麻烦点,你得在中间路过的每一级都把props透传下去,直至你最里层的那个组件。

我做了一个三级的jsfiddle,最外层放:room,中间透传,三层组件Bar接收。

估计这次可以解决你问题了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题