import AddressList from "@/components/AddressList"; import Popup from "@/components/popup"; import { Text, View } from "@tarojs/components" import classnames from "classnames"; import { memo, useCallback, useEffect, useMemo, useState } from "react"; import styles from './index.module.scss' export type AddressInfoParam = { province_name: string, city_name: string, district_name: string, address_detail: string, id?: number, name: string, phone: string } type Param = { onSelect?: (val:any) => void, //选择 defaultValue?: AddressInfoParam|null //默认值 disabled?: false|true //true禁用后只用于展示 } export default memo(({onSelect, defaultValue = null, disabled = false}: Param) => { const [showAddressList, setShowAddressList] = useState(false) useEffect(() => { setUserInfo(() => defaultValue) }, [defaultValue]) //选择地址 const [userInfo, setUserInfo] = useState() const getAddress = useCallback((val) => { setShowAddressList(() => false) setUserInfo(() => val) onSelect?.(val) }, []) //地址格式 const formatAddress = useMemo(() => { if(userInfo) return userInfo.province_name + userInfo.city_name + userInfo.district_name + userInfo.address_detail }, [userInfo]) const changeShow = () => { if(!disabled) setShowAddressList(() => true) } return ( changeShow()}> {!userInfo&& <> 请选择收货地址及信息 ||<> {userInfo?.name} {userInfo?.phone} {formatAddress} 修改 } {!disabled&& setShowAddressList(false)}> 请选择收货地址 getAddress(item)}/> } ) })