# 07 | 巧妙的响应式:深入理解Vue 3的响应式机制
你好,我是大圣。在上一讲中,我给你介绍了Composition API相比于Option API 的优点,以及
```
## Vueuse工具包
我们自己封装的useStorage,算是把localStorage简单地变成了响应式对象,实现数据的更新和localStorage的同步。同理,我们还可以封装更多的类似useStorage函数的其他use类型的函数,把实际开发中你用到的任何数据或者浏览器属性,都封装成响应式数据,这样就可以极大地提高我们的开发效率。
Vue 社区中其实已经有一个类似的工具集合,也就是VueUse,它把开发中常见的属性都封装成为响应式函数。
VueUse 趁着这一波 Vue 3 的更新,跟上了响应式API的潮流。VueUse的官方的介绍说这是一个 Composition API 的工具集合,适用于Vue 2.x或者Vue 3.x,用起来和 React Hooks 还挺像的。
在项目目录下打开命令行里,我们输入如下命令,来进行VueUse插件的安装:
```xml
npm install @vueuse/core
```
然后,我们就先来使用一下VueUse。在下面这段代码中,我们使用useFullscreen来返回全屏的状态和切换全屏的函数。这样,我们就不需要考虑浏览器全屏的API,而是直接使用VueUse响应式数据和函数就可以很轻松地在项目中实现全屏功能。
```xml
click
```
useFullscreen的封装逻辑和useStorage类似,都是屏蔽了浏览器的操作,把所有我们需要用到的状态和数据都用响应式的方式统一管理,VueUse中包含了很多我们常用的工具函数,我们可以把网络状态、异步请求的数据、动画和事件等功能,都看成是响应式的数据去管理。
## 总结
我们来总结一下今天学到的内容,首先我给你介绍了响应式的概念以及我们为什么需要响应式,具体Vue 3的响应式源码,我会在课程第四部分带你手写一个。
然后,通过对useStorage的封装,我为你讲解了响应式机制的进阶用法,那就是可以把一切项目中的状态和数据都封装成响应式的接口,屏蔽了浏览器的API,对外暴露的就是普通的数据,可以极大地提高我们的开发效率。
接着,我带你了解了VueUse这个工具包,这也是Vue官方团队成员的作品。VueUse提供了一大批工具函数,包括全屏、网络请求、动画等,都可以使用响应式风格的接口去使用,并且同时兼容 Vue 2 和 Vue 3,开箱即用。这门课程剩下的项目中会用到很多VueUse的函数,也推荐你去GitHub 关注 VueUse的动态和功能。
## 思考题
最后,留给你一道思考题:你的项目中有哪些数据可以封装成响应式数据呢?
欢迎在评论区留言,我会跟你一起探究Vue 3响应式的其他用法,也欢迎你把这篇文章分享给其他人,我们下一讲见!