跳至主要內容

地址选择

起凡大约 3 分钟起凡商城地址地址选择

地址选择

该组件用于从地址列表中选择地址。通过弹出框显示地址列表,用户点击地址后,会更新选择的地址并发出选择事件。该组件还会在加载时从API获取用户地址列表,并设置第一个地址作为默认选择。

地址选择组件
地址选择组件

源码解析

展示地址

  • <nut-popup>:使用外部库的弹出框组件,可以显示一组地址列表。
  • 地址列表:使用v-for循环遍历addressList中的地址,并在每个地址上添加address-wrapper类。点击地址时,调用handleChoose方法。
  • <check><location2>:这两个组件分别表示选中和未选中的图标,具体取决于当前地址是否与chosenAddress相匹配。
  • <address-row>:这是一个组件,用于显示地址的详细信息。
<template>
  <div class="address-choose">
    <!-- 弹出地址列表 -->
    <nut-popup
      :visible="visible"
      @update:visible="(value) => emit('update:visible', value)"
      position="bottom"
      closeable
      round
    >
      <!-- 点击地址向外发送选择事件,事件内包含了选中的地址信息 -->
      <div
        class="address-wrapper"
        :key="address.id"
        v-for="address in addressList"
        @click="handleChoose(address)"
      >
        <!-- 判断是否选中,选中则显示选中图标 -->
        <check color="red" v-if="address.id == chosenAddress.id"></check>
        <location2 color="red" v-else></location2>
        <!-- 展示地址信息 -->
        <address-row class="address" :address="address"> </address-row>
      </div>
    </nut-popup>
  </div>
</template>