3.2.1 ref 属性

  1. 被用来给元素或子组件注册引用信息(id的替代者)
  2. 应用在html标签上获取的是真实DOM元素,应用在组件标签上是组件实例对象(vc)
  3. 使用方式:
    1. 打标识:<h1 ref="xxx">.....</h1><School ref="xxx"></School>
    2. 获取:this.$refs.xxx

      代码演示

      ```vue
  1. <a name="veQOg"></a>
  2. # 3.2.2 prots 属性
  3. 1. 功能:让组件接收外部传过来的数据
  4. 1. 传递数据:`<Demo name="xxx"/>`
  5. 1. 接收数据:
  6. 1. 第一种方式(只接收):`props:['name']`
  7. 1. 第二种方式(限制类型):`props:{name:String}`
  8. 1. 第三种方式(限制类型、限制必要性、指定默认值)`:`
  9. props是只读的,Vue底层会监测你对props的修改,如果进行了修改,就会发出警告,若业务需求确实需要修改,那么请复制props的内容到data中一份,然后去修改data中的数据。
  10. <a name="e9Bdw"></a>
  11. ## 代码演示
  12. ```vue
  13. <template>
  14. <div>
  15. <h1>{{msg}}</h1>
  16. <h2>学生姓名:{{name}}</h2>
  17. <h2>学生性别:{{sex}}</h2>
  18. <h2>学生年龄:{{myAge+1}}</h2>
  19. <button @click="updateAge">尝试修改收到的年龄</button>
  20. </div>
  21. </template>
  22. <script>
  23. export default {
  24. name:'Student',
  25. data() {
  26. console.log(this)
  27. return {
  28. msg:'我是一个尚硅谷的学生',
  29. myAge:this.age
  30. }
  31. },
  32. methods: {
  33. updateAge(){
  34. this.myAge++
  35. }
  36. },
  37. //简单声明接收
  38. // props:['name','age','sex']
  39. //接收的同时对数据进行类型限制
  40. /* props:{
  41. name:String,
  42. age:Number,
  43. sex:String
  44. } */
  45. //接收的同时对数据:进行类型限制+默认值的指定+必要性的限制
  46. props:{
  47. name:{
  48. type:String, //name的类型是字符串
  49. required:true, //name是必要的
  50. },
  51. age:{
  52. type:Number,
  53. default:99 //默认值
  54. },
  55. sex:{
  56. type:String,
  57. required:true
  58. }
  59. }
  60. }
  61. </script>

:age是动态绑定,:age="18"表示 age 的值必须是运行双引号(”18”)里面 js 表达式执行的结果,不加:的标签都做字符串处理。

<template>
    <div>
        <Student name="李四" sex="女" :age="18"/>
    </div>
</template>

<script>
    import Student from './components/Student'

    export default {
        name:'App',
        components:{Student}
    }
</script>

演示效果

chrome-capture-2022-4-29.gif