1:可復(fù)用組件里面的回調(diào)方法最好聲明為可選屬性 ? , 因?yàn)橛胁灰欢ㄋ袠I(yè)務(wù)都需要這個回調(diào);同時在aboutToReuse里也給這個回調(diào)賦一下值,因?yàn)榭赡苡腥擞昧诉@個組件控淡,但是沒給傳回調(diào),復(fù)用的時候就空指針了。
示例代碼:
@Reusable
@Component
export struct GoodsItem {
//點(diǎn)擊事件是否成功的回調(diào):加購
private onItemClick?: (position: number) => void = () => {
}
aboutToReuse(params: Record<string, ESObject>) {
this.onItemClick = params.onItemClick as () => void
}
build() {
Text('測試')
.onClick(() =>{
if (this.onItemClick) {
this.onItemClick(1)
}
})
}
}
2:解析接口返回的數(shù)據(jù)時肌毅,對字段使用空表示;業(yè)務(wù)中使用的數(shù)據(jù)和接口返回的數(shù)據(jù)之間要進(jìn)行轉(zhuǎn)換姑原,不能在業(yè)務(wù)中直接使用接口返回的數(shù)據(jù)悬而;比如goodsName,接口有時候可能會返回锭汛,有時候可能不返回笨奠,如果直接使用goodsName就可能導(dǎo)致崩潰
示例代碼:
//接口直接返回的數(shù)據(jù)
export interface GoodsDataFromServer {
goodsName?: string //后臺返回
}
//業(yè)務(wù)中使用的數(shù)據(jù)
export interface GoodsDataForBusiness {
goodsName: string
}
//數(shù)據(jù)轉(zhuǎn)換
private convertData(dataSource: GoodsDataFromServer): GoodsDataForBusiness {
let dataBusiness = new GoodsDataForBusiness()
dataBusiness.goodsName = dataBusiness.goodsName ?? ''
return dataBusiness
}