- 组件的声明周期函数发生了变化
- 例如:
beforeCreate 修改为 setup
created 修改为 setup
beforeMount | onBeforeMount;
mounted | onMounted;
beforeUpdate | onBeforeUpdate;
updated | onUpdated;
activeted | onActiveted;
deactiveted | onDeactiveted;
beforeDestory | onBeforeUnmount;
destoryed | onUnmounted;
errorCaptured | one rrorCaptured;
renderTracked | onRenderTracked;
renderTriggered | onRenderTriggered;
-
setup 中返回的值为
双向数据绑定
的属性export default { setup(props: any, context: any) { return { changeMsg() { console.log("修改了msg"); }, }; }, };
-
使用 reactive 管理状态
import { reactive } from "vue"; export default { setup(props: any, context: any) { const state = reactive({ msg: "hha kyle!", }); return { changeMsg() { console.log("修改了msg"); }, }; }, };
-
使用 toRefs 将 reactive 定义的返回出去
// 返回出去才会绑定proxy import { reactive } from "vue"; export default { setup(props: any, context: any) { const state = reactive({ msg: "hha kyle!", }); return { changeMsg() { console.log("修改了msg"); }, ...toRefs(state), }; }, };
-
新增了 script setup
<script setup> // 这里写的相当于在setup函数里写; </script>
-
setup 函数接受 props, context 形参
props 接受的参数
context
attrs: Proxy
emit: (event, ...args) => instance.emit(event, ...args)
expose: exposed => {…}
slots: Proxy
-
vue3 很好的支持了 JSX 和 TypeScript
-
Pinia 用于 Vue 的状态管理库。
-
优点
易于学习
极轻, 仅有 1 KB
模块化设计,便于拆分状态