博客列表 >Vue自学:父子组件通信-父传子props

Vue自学:父子组件通信-父传子props

梁凯达的博客
梁凯达的博客原创
2021年01月19日 16:07:011385浏览
  1. `<!DOCTYPE html>
  2. <html lang="zh">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  7. <script src="https://cdn.jsdelivr.net/npm/vue@2.6.12"></script>
  8. <title>Vue自学:父子组件通信-父传子props</title>
  9. </head>
  10. <body>
  11. <div id="app">
  12. <!-- 分配通信过来的数值给到cpn子组件,分配方式为绑定虚拟属性 v-bind:arr="arr" -->
  13. <cpn v-bind:arr="arr"></cpn>
  14. </div>
  15. </body>
  16. <template id="cpn">
  17. <div>
  18. <ul>
  19. <!-- 成功的分配到了数值,通过分配过来的数值遍历 -->
  20. <li v-for="item in arr">{{item}}</li>
  21. </ul>
  22. </div>
  23. </template>
  24. <script type="text/javascript">
  25. //在上一节中,我们提到了子组件是不能引用父组件或者Vue实例的数据的
  26. //但是,在开发中,往往一些数据确实需要从上层传递到下层
  27. //比如在一个页面当中,我们从服务器请求到了很多数据
  28. //其中一部分数据,并非是我们整个页面的大组件来展示的,而是需要下面的子组件进行展示
  29. //这个时候,并不会让子组件再次发送一个网络请求,而是直接让大组件(父组件)传递数据给小组件(子组件)
  30. //如何进行父组件间的数据传递呢?Vue官方提到
  31. //通过props向子组件传递数据
  32. //通过事件向父组件传递信息
  33. //1.创建局部组件
  34. const cpn = {
  35. // 设置绑定的模板
  36. template:'#cpn',
  37. data(){
  38. },
  39. methods:{
  40. },
  41. //props:父组件传递到子组件的通信
  42. props:{
  43. //默认值写法(最为完善的写法)
  44. //传递过来的是父组件中的arr属性
  45. //推荐使用使用对象写法
  46. arr:{
  47. type:Array,
  48. //当默认值为空数组时,正确的是些是使用函数返回默认值
  49. default(){
  50. return []
  51. },
  52. required:true,
  53. },
  54. },
  55. //使用对象写法的同时,也可以使用数组写法 ['arr'],但无法进行数据验证,因而不推荐
  56. //使用对象写法,可以进行数据类型校验,验证支持如下类型:
  57. //String
  58. //Number
  59. //Boolean
  60. //Array
  61. //Object
  62. //Date
  63. //Function
  64. //Symbol
  65. }
  66. //2.创建父组件
  67. const app = new Vue({
  68. el:'#app',
  69. data:{
  70. arr:['苹果','香蕉','雪梨','蔬菜'],
  71. },
  72. methods:{
  73. },
  74. components:{
  75. 'cpn':cpn
  76. },
  77. })
  78. //使用对象的方式对类型进行返回或验证
  79. // Vue.component('my-component',{
  80. // props:{
  81. // //基础的类型检查('null,匹配任何类型'),匹配单个
  82. // propA:Number,
  83. // //匹配多个可能的类型,重叠
  84. // propB:[string,Number],
  85. // //必须的字符串
  86. // propC:{
  87. // type:String,
  88. // required:true,
  89. // },
  90. // //带有默认值为数字的
  91. // propD:{
  92. // type:Number,
  93. // default:100,
  94. // }
  95. // //带有默认值的对象
  96. // propE:{
  97. // type:Object,
  98. // //对象或数组,一定以函数方式返回
  99. // default(){
  100. // return {
  101. // name:'梁凯达'
  102. // }
  103. // }
  104. // },
  105. // //自定义验证函数
  106. // propF:{
  107. // validator:function(){
  108. // //这个值必须匹配下列字符串中的某一个
  109. // return ['success','warning','danger'].indexOf(value) !== -1
  110. // }
  111. // }
  112. // }
  113. // })
  114. </script>
  115. </html>`
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议