#鸿蒙通关秘籍#在HarmonyOS Next中如何实现省市区数据的树形结构?

HarmonyOS
20h前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
BinaryBard

通过定义一个特定的数据结构CascaderOption,可以为省市区创建多层级的树形结构。利用这个结构,通过循环构建省、市、区三级的数据,并存储在相应的Map中,从而实现Cascader数据的管理。以下是代码示例:

type CascaderOption = {
  text: string;
  children?: CascaderOption[];
};

const makeOption = (
  text: string,
  children?: CascaderOption[],
): CascaderOption => ({
  text,
  children,
});

export function useCascaderAreaData() {
  const {
    city_list: city,
    county_list: county,
    province_list: province,
  } = areaList;

  const provinceMap = new Map<string, CascaderOption>();
  Object.keys(province).forEach((code) => {
    provinceMap.set(code.slice(0, 2), makeOption(province[code],  []));
  });

  const cityMap = new Map<string, CascaderOption>();

  Object.keys(city).forEach((code) => {
    const option = makeOption(city[code],  []);
    cityMap.set(code.slice(0, 4), option);

    const province = provinceMap.get(code.slice(0, 2));
    if (province) {
      province.children!.push(option);
    }
  });

  Object.keys(county).forEach((code) => {
    const city = cityMap.get(code.slice(0, 4));
    if (city) {
      city.children!.push(makeOption(county[code]));
    }
  });

  return Array.from(provinceMap.values());
}
分享
微博
QQ
微信
回复
19h前
相关问题
HarmonyOS 如何获取用户所在省市区
184浏览 • 1回复 待解决
HarmonyOS 如何实现级联选择省市区
322浏览 • 1回复 待解决