vue3中没有 data 等配置项, 并且它的引入方式也不是像vue2中的 import vue就可以了, 而是用到什么再引入什么, 其中 setup() 函数, 是最大的区别
vue3中的 setup 有点像vue2中的 data , 但又不完全是
setup 会在 生命周期created 之前执行一次,也就是说 setup 函数中是没有 this的, 因为vue还没有加载上去
首先 setup函数是有参数的 (第一个参数是 props 对象, 第二个参数是 context 上下文对象)
setup(props, context)
props 就是 组件传值中的 props属性,
那么为什么这里的 setup 会注入这个属性呢, 我想的是 我们在外面定义了 props:[“name”,“person”], 但是这个数据,有可能我们会在方法中用到, 而setup中又没有 this, 所以不可能拿到外部的 props , 所以就给 setup 注入了这个参数, 以供使用
context 是setup中的第二个参数, 它里面有三个对象, 其中比较重要的是 应该就是 emit 对象了,
attrs 是父组件传过来的参数, emit是父子组件通信的自定义事件, slots是组件中的插槽对象
其中重要的emit 的用法, 有点区别
当我们使用自定义事件的时候, 使用 context.emit(), 同时我们要在,配置中使用 emits:[‘democlick’], 来声明一下, 不然会报一个错误
不影响程序, 但看着不爽
在setup中定义的所有数据, 函数,方法, 最终要使用的时候都要 在 setup中, return 出去才可以使用
这一点就像是 vue2中的 data 配置项中的 return {}