[Vue警告]:渲染错误:“TypeError:无法读取未定义的属性'name'”

时间:2018-04-20 14:14:35

标签: vue.js

我收到错误

  

TypeError:无法读取未定义“

的属性”name“

如果我深入到物体中。

Timeline.vue

<template>
<div class="container">
    <div class="row">
        <div class="col-md-8 col-md-offset-2">
            <div class="card card-default">
                <div class="card-header">Timeline</div>

                <div class="card-body">
                    <post v-for="post in posts" :key="post.id"></post>
                </div>
            </div>
        </div>
    </div>
</div>
</template>

<script>
import Post from './Post.vue'

export default {
    data () {
        return {
            posts: []
        }
    },
    components: {
        Post
    },
    mounted() {
        this.$http.get('/posts').then((response) => {
            console.log(response.body)
            this.posts =response.body
        })
    }
}
</script>

post.vue

<template>
<div class="media">

    <div class="media-left">

    </div>
    <div class="media-body">
        <strong>test</strong>
        <strong>{{ post.user.name }} </strong> 
    </div>
</div>
</template>

<script>
export default {
   props: [
        'post'
    ]
}
</script>

然后我为什么会收到错误? 我想{{post.user.name}}会遇到一些问题。

1 个答案:

答案 0 :(得分:2)

你需要像这样在模板中传递post prop。否则它在子组件(post)中未定义。

<div class="card-body">
    <post 
        v-for="post in posts" 
        :key="post.id"
        :post="post">
    </post>
</div>