39 lines
1014 B
TypeScript
39 lines
1014 B
TypeScript
|
// 可以将此代码放置于项目src/hooks/useColPickerData.ts中
|
|||
|
import { useCascaderAreaData } from '@vant/area-data'
|
|||
|
|
|||
|
export type CascaderOption = {
|
|||
|
text: string
|
|||
|
value: string
|
|||
|
children?: CascaderOption[]
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 使用'@vant/area-data'作为数据源,构造ColPicker组件的数据
|
|||
|
* @returns
|
|||
|
*/
|
|||
|
export function useColPickerData() {
|
|||
|
// '@vant/area-data' 数据源
|
|||
|
const colPickerData: CascaderOption[] = useCascaderAreaData()
|
|||
|
|
|||
|
// 根据code查找子节点,不传code则返回所有节点
|
|||
|
function findChildrenByCode(data: CascaderOption[], code?: string): CascaderOption[] | null {
|
|||
|
if (!code) {
|
|||
|
return data
|
|||
|
}
|
|||
|
for (const item of data) {
|
|||
|
if (item.value === code) {
|
|||
|
return item.children || null
|
|||
|
}
|
|||
|
if (item.children) {
|
|||
|
const childrenResult = findChildrenByCode(item.children, code)
|
|||
|
if (childrenResult) {
|
|||
|
return childrenResult
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
return null
|
|||
|
}
|
|||
|
|
|||
|
return { colPickerData, findChildrenByCode }
|
|||
|
}
|