123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- <template>
- <h2>子级组件</h2>
- <h3>msg: {{ msg }}</h3>
- <h3>count: {{ count }}</h3>
- <h3>{{ a }}</h3>
- <!-- <button @click="add">点击</button> -->
- </template>
- <script lang="ts">
- import { defineComponent ,ref} from 'vue'
- export default defineComponent({
- name: 'Child',
- props: ["msg"],
- //数据初始化生命周期回调
- beforeCreate(){
- console.log("beforeCreate")
- },
- //setup 在beforeCreate回调之前就执行了 而且就执行一次
- //setup执行的时候 组件没有创建出来 意味着组件实例对象this不能调用
- //this是undefined 不能通过this调用 data/computed/methods/props 的东西
- //setup返回值是一个方法和对象 内部的属性和方法都是给html模板去使用的
- //setup中的对象的内部的属性和data函数中的return对象中的属性都可以在html模板当中使用
- //setup中的对象中的属性和data函数中对象中的属性会合并成为组件对象的属性
- //如果重名的话 setup数据优先
- setup (props,content) {
- console.log('setup',this)
- console.log(props,content)
- const a = 10
- const c = ref(10)
- /*
- props: 包含props配置声明且传入的所有属性的对象
- attrs: 包含没有在props配置中声明的对象,this.$attrs
- slots: 包含所有传入插槽内容的对象,相当于 this.$slots
- emit: 用来分发自定义事件函数,相当于this.$emit
- */
- //注意: methods中可以访问setup所提供的属性和方法,但是在seup方法中不能访问data和methods
- // function add(){
- // this.d++
- // }
- //setup不能是一个async函数: 因为返回值不是return对象,而是promise,模板看不到return对象中的属性数据
- return {
- a,
- c
- }
- },
- data(){
- return{
- count: 10,
- a: 5,
- d: 1
- }
- },
- methods:{
- // add(){
- // this.c++
- // console.log(this.c)
- // }
- },
- mounted(){
- console.log(this)
- }
- })
- </script>
- <style scoped>
- </style>
|