VueJs:无效的道具:期望的布尔值,未定义

问题描述 投票:0回答:2

使用组件时出现两个错误

1-

[Vue警告]:属性或方法“高级”未在实例,但在渲染过程中被引用。确保此属性是在data选项中或对于基于类的组件,通过初始化属性

2-

[[Vue警告]:道具无效:道具“高级”的类型检查失败。预期的布尔值,未定义

这是我的代码:

HTML:

<!DOCTYPE html>
    <html lang="en">

    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <meta http-equiv="X-UA-Compatible" content="ie=edge">
      <title>eCommerce</title>
    </head>

    <body>

      <div id="app">
        <product :premium='premium'></product>
      </div>




      <script src="public/plugins/bootstrap-4.3.1/js/bootstrap.min.js">
      <script src="public/js/vue.js"></script>
      <script src="public/js/app.js"></script>
    </body>

</html>

app.js

Vue.component('product', {
      props: {
        premium: {
          type: Boolean,
          required: true
        }
      },
      template: `
        <div class="container">
           <p>{{ premium }}</p>
        </div>
    `,
      data() {
        return {
          cart: 0,
          color: "white"
        }
      },
      methods: {
        addToCart() {
          return this.cart++
        },

      }

    }) //component

    var app = new Vue({
      el: '#app',

});
vuejs2
2个回答
1
投票

因为您没有定义数据属性,只需将新属性添加到实例中,请参见:

var app = new Vue({
  el: '#app',
  data: {
   // i set true because your component requires Boolean type
   premium: true
  }
});

0
投票

您是dynamically binding(用冒号:表示为缩短的[[v-bind前缀)一个JavaScript表达式 premium的布尔值属性。

假设没有定义此名称为premium的变量,它将求值为JavaScript值Undefined,而不是必需的有效布尔值falsetrue。因此,警告:

    已引用但未定义必需属性
  1. 无效的属性类型
  • 尝试通过

    动态绑定或简单的静态绑定

  • 将其绑定到常量,例如:<product premium="true"></product>
    另请参见:

    © www.soinside.com 2019 - 2024. All rights reserved.