【问题标题】:Vue props undefined when passing from parent component to child component从父组件传递到子组件时Vue道具未定义
【发布时间】:2020-08-04 18:54:08
【问题描述】:

将两个数据成员从我父母的数据方法传递到子组件的道具时遇到问题。基本上,我在父组件中设置数据值,将它们绑定到 HTML 模板中的子组件调用。然后我试图在孩子的“道具”中引用这个传递的数据。

但我一直在我的 Vue 开发工具中得到这个:

 props
   date: undefined
   title: undefined

这是我的代码:

App.vue(仅供参考。我不希望我的问题与此代码有关)

<template>
  <div id="app">
    <div id="nav">
      <Header />
    </div>
  </div>
</template>

<script>
  import Header from '@/components/Header.vue'

  export default {
    components: {
      Header
    }
  }
</script>

Home.vue(父组件)

<template>
  <div>
    <Header :title="title" :date="date" />
  </div>
</template>

<script>
// @ is an alias to /src
import Header from "@/components/Header.vue";
import moment from "moment";

export default {
  data () {
    return {
      title: "SOME NEWS",
      date: moment().format("dddd, MMMM D, YYYY") 
    }
  },
  components: {
    Header
  }
};
</script>

Header.vue(子组件)

<template>
  <div class="hello">
    <h1>{{ getTitle() }}</h1>
    <h3>{{ getDate() }}</h3>
  </div>
</template>

<script>
  export default {
    props: {
      title: {
        type: String,
        required: true
      },
      date: {
        type: String,
        required: true
      }
    },
    method: {
      getTitle() {
        return this.title
      },
      getDate() {
        return this.date
      }
    }
  };
</script>

【问题讨论】:

  • 你能分享一个工作的例子吗?
  • 如果我有一个工作示例,我不会发布这个问题。
  • 但我一直在我的 Vue 开发工具中得到这个:没有工作示例就会发生这种情况?
  • 我提供的代码是我所拥有的,但它不起作用,并且 Vue 开发工具(适用于 Chrome)显示两个属性,标题和日期,未定义。
  • 你理解工作示例的含义吗?它是显示错误的代码,在环境中工作,例如代码 sn-p/code 沙箱。

标签: vue.js vue-component


【解决方案1】:

如果我理解您的 App 组件代码正确,您应该使用 &lt;Home /&gt; 组件,但您使用 &lt;Header /&gt; 代替。示例:

<template>
  <div id="app">
    <div id="nav">
      <Home />
    </div>
  </div>
</template>

<script>
  import Home from '@/components/Home.vue'
  export default {
    components: {
      Home
    }
  }
</script>

【讨论】:

  • Home 组件在 'views' 目录下,不需要在 App.vue 中注册。但是我的 Header 组件需要在每个页面上展示,所以将它包含在 App.vue 中并注册为组件。
  • 好的,但是您将 Header 组件包含在 Home 中。而且您将道具从 Home 传递到 Header,但您的 Home 组件并未在任何地方使用。它永远不会显示。
  • 我明白你的意思了。所以 App.vue 应该是我的 Parent,而不是 Home.vue。准确吗?
  • 是的,没错。请尝试在您的 App 组件中将 Header 替换为 Home,您将看到它是如何工作的。
猜你喜欢
  • 1970-01-01
  • 2019-11-12
  • 2018-06-24
  • 2020-10-02
  • 1970-01-01
  • 2020-07-26
  • 1970-01-01
  • 2020-09-01
  • 2020-07-30
相关资源
最近更新 更多