父组件向子组件传值-props属性名类型

本文探讨了在Vue中,父组件如何通过props向子组件传递值,强调了props属性名在定义时应遵循的驼峰式与短横线形式的规则。同时,内容还涉及到props属性值类型的绑定差异,指出在字符串模板中不强制要求格式,并且当props为数字时,加冒号表示number类型,可用于数值计算,而不加冒号则被视为string类型。

父组件向子组件传值时props属性名规则:

  1. 在props中使用驼峰形式,模板中需要使用短横线得形式
  2. 字符串形式得模板中没有这个限制
<body>
  <div id="app">
    <div>{{pmsg}}</div>
    <menu-item :menu-title='ptitle'></menu-item>
  </div>
  <script type="text/javascript" src="js/vue.js"></script>
  <script type="text/javascript">
    /*
      父组件向子组件传值-props属性名规则
    */
    Vue.component('third-com', {
      props: ['testTile'],
      template: '<div>{{testTile}}</div>'
    });
    Vue.component('menu-item', {
      props: ['menuTitle'],
      template: '<div>{{menuTitle}}<third-com testTile="hello"></third-com></div>'
    });
    var vm = new Vue({
      el: '#app',
      data: {
        pmsg: '父组件中内容',
        ptitle: '动态绑定属性'
      }
    });
  </script>
</body>

结果:
在这里插入图片描述

props属性值类型绑定有什么区别:

 <body>
     <div id="app">
         <div>{{psmg}}</div>
        <menu-item :pstr='pstr' pnum='12' pboo='true'></menu-item>
     </div>
     <script type="text/javascript" src="js/vue.js"></script>
     <script type="text/javascript">
         //组件注册
         Vue.component('menu-item',{
            props:['pstr','pnum','pboo'],
             template:`
             <div>
                <div>{{pstr}}</div>
                <div>{{pnum}}</div>
             </div>
             `
         });
         var vm = new Vue({
             el:'#app',
             data:{
                 psmg:'父组件得内容',
                 pstr:'hello'
             }
         });
     </script>
 </body>

结果:
在这里插入图片描述
注:

  1. 子组件是字符串模板时,template使用得是倒引号
  2. 子组件中props属性如果是数字,加冒号时属性为number类型可以进行数值计算,而不加冒号时则是string类型
Vue中,父组件子组件使用propsprops写在子组件里面,有以下两种常见的写法: - 直接数组形式:可以直接在子组件中以数组形式定义props,例如子组件通过`props: ["min", "max", "initCount"]`来接收父组件递的,在子组件的`created`钩子函数中可以使用`this.max`访问接收到的,还可以定义`data`和`methods`等选项 [^1]。 - 对象形式:也可以将props写成一个对象,在对象中可以指定每个prop的类型、默认和是否为必项等。如`props: { cmovie: Array, cmessage: { type: String, default: "hahhaha", required: true } }`,这里`cmovie`指定为数组类型,`cmessage`指定为字符串类型,并且设置了默认为"hahhaha",同时标记为必项,若则会报错 [^2]。 如果希望子组件props属性取为默认父组件中可直接,无需进行其他处理 [^4]。 ### 示例代码 ```vue <!-- 子组件 --> <template> <div> <!-- 子组件模板内容 --> </div> </template> <script> export default { props: { // 以对象形式定义props message: { type: String, default: '默认消息' }, count: { type: Number, required: true } }, created() { console.log(this.message); console.log(this.count); }, data() { return {}; }, methods: {} }; </script> <!-- 父组件 --> <template> <div> <!-- 父组件子组件 --> <child-component :message="parentMessage" :count="parentCount"></child-component> </div> </template> <script> import ChildComponent from './ChildComponent.vue'; export default { components: { ChildComponent }, data() { return { parentMessage: '来自父组件的消息', parentCount: 10 }; } }; </script> ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值