12. props配置

App.vue

<template>
  <div>
    <Student name="呓语" sex="女" :age="20"></Student>
  </div>
</template>
<script>
import Student from "@/components/Student";
export default {
  name: "App",
  components:{Student},
  data(){
    return{
      msg:"欢迎学习Vue!"
    }
  },

}
</script>
<style scoped>
</style>

Student.vue

<template>
  <div>
    <h1>{{msg}}</h1>
    <h2>学生姓名: {{name}}</h2>
    <h2>学生性别: {{sex}}</h2>
    <h2>学生年龄: {{myAge+1}}</h2>
    <button @click="updateAge">尝试修改年龄</button>
  </div>
</template>
<script>
export default {
  name: "Student",
  data(){
    return{
      msg:"我是来自南方IT的学生!",
      myAge:this.age
    }
  },
  //简单声明接收
  props:['name','age','sex'],
  methods:{
    updateAge(){
      this.myAge++
    }
  }

  //接收的同时对数据进行类型限制
  // props:{
  //   name:String,
  //   age:Number,
  //   sex:String
  // }

  //接收的同时对数据进行类型限制+默认值的指定+必要性的限制
  // props:{
  //   name:{
  //     type:String, //name的类型是字符串
  //     required:true //name是必要的
  //   },
  //   sex:{
  //     type:String,
  //     required: true
  //   },
  //   age:{
  //     type:Number,
  //     default:99 //如果age为空,则默认值为99
  //   }
  // }
}
</script>
<style scoped>
</style>

总结

实现的功能: 让组件接收外部传过来的数据

1.传递数据:

  <Student name="xxx"/>

2.接收数据:

  1.第一种方式:(只接收): 

     props:['name']

  2.第二种方式(限制类型):

     props:{

  ​       name:String

     }

  3.第三种方式(限制类型,限制必要性,指定默认值)

     props:{

  ​       type:String, //类型

  ​       required:true, //必要性

  ​       default:'老王' //默认值

     }

备注: props是只读的,Vue底层会检测你对props的修改,如果进行了修改,就会发出警告,若业务层需求要求需要修改,name请复制props的内容到data中一份,然后去修改data中的数据.

最后修改:2023 年 01 月 31 日
如果觉得我的文章对你有用,请随意赞赏