API写法
1.选项式API和组合式API(重点讲选项式API)
1.1 选项式API(Options API)
1.1.1 选项式API的特性
选项式API示例:
1.1.2 选项式API的痛点:
如果一个组件中 有两个功能模块 需要实现,data和methods,computed 中都有这两个模块的功能代码, 则维护起来比较吃力
1.2 组合式API(Composition API)
1.2.1 组合式API的基本结构
export default {
// 1. 基本信息
name: 'ComponentName',
components: { /* 子组件 */ },
mixins: [ /* 混入 */ ],
extends: BaseComponent,
// 2. 数据相关
data() { return {} },
computed: { /* 计算属性 */ },
watch: { /* 监听器 */ },
// 3. 方法
methods: { /* 方法 */ },
// 4. 生命周期钩子
beforeCreate() {},
created() {},
beforeMount() {},
mounted() {},
beforeUpdate() {},
updated() {},
beforeUnmount() {}, // Vue3
unmounted() {}, // Vue3
// 5. 其他选项
props: { /* 属性 */ },
emits: { /* 事件 */ },
provide() { return {} },
inject: [],
directives: { /* 自定义指令 */ }
}
1.2.2 Vue提供了语法糖,省略了setup的包裹
1.3 区别
2 响应式API==>ref()与reactive()
2.1 ref()
2.2 reactive()
2.3 ref与reactive的区别
3 computed:计算属性
3.1 解释一下派生值
3.2 解释一下缓存
缓存:只要依赖没有变化,则不会重新执行计算函数==>减小性能 举例:使用method和computed实现同一功能
3.2.1 method
3.2.2 computed
代码示例:
4.watch:侦听变化
4.1 watch示例:
4.2 副作用 = 除了返回结果之外,还对外部世界产生影响的操作。
Vue的响应式的陷阱
1.解构失败
1.1改进:更改属性,而不是直接解构赋值
即能成功赋值,还能保留响应式
1.2 使用toRefs保持响应式
使用toRefs(Vue提供),即能成功赋值,还能保留响应式
2. 新增属性是否响应?
2.1 改进做法
初始化时就将结构定义清楚
3. ref对象的整体替换
4.数组索引赋值问题
vue2不会更新,但vue3会自动更新
使用splice方法(可在vue2中实现):
解释:在索引为2的地方删除1个元素,再插入999