Child.vue 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <template>
  2. <h2>子级组件</h2>
  3. <h3>msg: {{ msg }}</h3>
  4. <h3>count: {{ count }}</h3>
  5. <h3>{{ a }}</h3>
  6. <!-- <button @click="add">点击</button> -->
  7. </template>
  8. <script lang="ts">
  9. import { defineComponent ,ref} from 'vue'
  10. export default defineComponent({
  11. name: 'Child',
  12. props: ["msg"],
  13. //数据初始化生命周期回调
  14. beforeCreate(){
  15. console.log("beforeCreate")
  16. },
  17. //setup 在beforeCreate回调之前就执行了 而且就执行一次
  18. //setup执行的时候 组件没有创建出来 意味着组件实例对象this不能调用
  19. //this是undefined 不能通过this调用 data/computed/methods/props 的东西
  20. //setup返回值是一个方法和对象 内部的属性和方法都是给html模板去使用的
  21. //setup中的对象的内部的属性和data函数中的return对象中的属性都可以在html模板当中使用
  22. //setup中的对象中的属性和data函数中对象中的属性会合并成为组件对象的属性
  23. //如果重名的话 setup数据优先
  24. setup (props,content) {
  25. console.log('setup',this)
  26. console.log(props,content)
  27. const a = 10
  28. const c = ref(10)
  29. /*
  30. props: 包含props配置声明且传入的所有属性的对象
  31. attrs: 包含没有在props配置中声明的对象,this.$attrs
  32. slots: 包含所有传入插槽内容的对象,相当于 this.$slots
  33. emit: 用来分发自定义事件函数,相当于this.$emit
  34. */
  35. //注意: methods中可以访问setup所提供的属性和方法,但是在seup方法中不能访问data和methods
  36. // function add(){
  37. // this.d++
  38. // }
  39. //setup不能是一个async函数: 因为返回值不是return对象,而是promise,模板看不到return对象中的属性数据
  40. return {
  41. a,
  42. c
  43. }
  44. },
  45. data(){
  46. return{
  47. count: 10,
  48. a: 5,
  49. d: 1
  50. }
  51. },
  52. methods:{
  53. // add(){
  54. // this.c++
  55. // console.log(this.c)
  56. // }
  57. },
  58. mounted(){
  59. console.log(this)
  60. }
  61. })
  62. </script>
  63. <style scoped>
  64. </style>