通过API调用组件的时候,需要涉及到组件的单例、多例模式。如果组件是单例的,在多次实例化的时候,只有一个实例,对应的视图层也只存在一份;如果组件是多例的,那么每次实例化的时候都会产生一个新的实例,且对应的视图也是多份的,它们之间互不影响。
在cube-ui中涉及到API调用的组件的基本都是弹层类,经常使用的如下:
- Toast提醒
- Picker选择器
- TimerPicker时间选择器
- Dialog弹窗
- ActionSheet操作菜单
所有的API调用都是使用create-api模块暴露出的createAPI函数实现,在定义的时候就决定了该组件是否是单例的。
默认情况下,Toast、Dialog以及ActionSheet是单例的,而Picker和TimePicker是多例的。如果想在实例化的时候改变默认行为,设定$createX
中的参数
const dialog = this.$createDialog({
type: 'confirm',
title: 'title',
content: 'content'
},false)
dialog.show()
一般情况下,默认行为就能满足要求了。
限于Picker和TimePicker的场景,不支持单例模式