万丈高楼平地起,上一篇文章,主要讲述了如何搭建源码阅读的环境,如有不清楚的,可以去看下:《小白读源码--vue3(环境准备)》。
此外,我们跑了示例服务后,也看到了vue3的examples,如图:
我们可以看到在examples中,有4个文件目录,第一个应该是测试文件相关的东西,我没点开,忽略,后面有3个,分别是 classic / composition / transition ,大概看了下里面的示例代码,transition 应该过渡组件相关的,具体的没细看,就看到两个文件中有transtion 和 transition ; classic 里面和之前vue2的写法差不多的文件,就是有些示例化方式变成由 new --> createApp 之类的 ;composition 里面creatApp 后直接出现了 setup()。纳尼,这是什么东西,赶紧去搜一波。
先附上一波链接:
为啥要有Composition Api ?
在classic的示例代码中,我们可以看到,在写组件时,我们可能会用到components, props, data, computed, methods, lifecycle methods等,这些就是一些可选的配置项options,就类似于echarts的options。这种情况下,会出现一个问题。就如 Vue3 Essentials Course 中提的搜索的组件一样,如果我要实现一个搜索的组件,初始化的代码可能很少,但是如果我要不断给这个组件添加一些其他的功能,例如:排序、过滤、筛选之类的,就会往data / methods 中添加好多代码,这些代码分很分散,不利于阅读和维护,我们就想着,如果能将同一逻辑的代码写到一起,不就很完美来嘛?
针对上面的问题,vue2也有解决的方法,用的比较多的有mixins和slot的方法,这些方法有利有弊吧,具体的优缺点Vue3 Essentials Course说的很好,还是推荐大家看看。
如何使用composition呢?
根据composition文件中的示例代码看来,主要使用了setup的函数,setup在组件内使用,是Composition API 的入口点,setup的详细API,有一些注意点:
- setup的参数props中值不可解析出来,会是去响应式
- setup中没有this