composition api
vue 2 中使用
全局中使用
- 安装
@vue/composition-api - 采用
Vue.use使用插件
库中使用
- 声明为
peer-depency即可
API 详述
reactive
注意使用 reactive 设定初始值
- 避免直接使用初始对象,因为采用代理模式,对响应对象的修改会复制到初始对象上 对于浅层次对象直接使用对象扩展语法复制对象
- 由于对象扩展对于深度引用的对象采用深拷贝在赋值解决,注意下次使用仍继续使用 深拷贝解决
框架层面建议初始赋值时使用 deepClone 解决对原始值修改的问题!
避免引用丢失,不要直接对整个 state 赋值,这样会导致响应式丢失
最佳实践
共享状态
将状态定义在外部,实现局部状态共享,示例参见 局部状态共享
代码结构
视图层处理用户层面的业务逻辑和交互行为
- 消费视图层的数据模型,处理 UI 事件到视图模型数据转换
业务层处理,输出视图层的消费数据,输入视图层原始数据转换后给业务层消费
- 处理数据模型和原始模型的转换
- 视图数据和服务数据的序列化和反序列化
- 封装业务逻辑向视图层提供消费接口
- 沉淀领域模型
服务层
- api 等服务消费,拉取原始数据进行消费
设计重点视图层模型定义,需解决三个问题
- 方便 UI 层面消费数据,数据模型尽可能表征 UI 结构
- 降低服务数据消费的转换代价,原始数据和视图数据的序列化和反序列化的次数应该尽可能低
- 统一视图层中组件之间的信息交互格式,降低组件数据流交互成本
典型的错误:
- 将服务层数据多层透传,污染到组件层级,应该在业务层隔离服务层的负作用, 处理数据的序列化和反序列化
- 视图中个组件的视图数据消费层次不统一
典型场景:
- 任务卡片的渲染和设置
- 输入数据的多样模式导致结构
- 输出数据的多样导致视图问题