DefaultAddress.tsx 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. "use client";
  2. import { useState, useEffect } from "react";
  3. import { clientFetch } from "@/lib/restApiClient";
  4. import Link from "next/link";
  5. export default function DefaultAddress() {
  6. const [addressDatas, setAddressDatas] = useState<any[]>([]); // 加 any[] 提示
  7. useEffect(() => {
  8. const load = async () => {
  9. // const page = 1;
  10. const resp = await clientFetch(
  11. `/api/customer/token/address`, ///api/shop/customer-addresses?page=${page}
  12. );
  13. console.log("完整返回:", resp.data);
  14. resp.data= Array.isArray(resp.data) ? resp.data : [];
  15. const sortedList = [...resp.data].sort((a, b) => {
  16. // true(1) 排在 false(0) 前面
  17. if (a.default_address !== b.default_address) {
  18. return b.default_address ? 1 : -1;
  19. }
  20. // 相同状态,保留原顺序(返回0即可)
  21. return 0;
  22. });
  23. setAddressDatas(sortedList);
  24. console.log("aaaa",sortedList,addressDatas);
  25. };
  26. load();
  27. }, []);
  28. return (
  29. <>
  30. {(addressDatas || []).map((item) => (
  31. <div key={item.id} className="mb-6">
  32. {item.default_address ? (
  33. <h2 className="text-xl font-bold uppercase mb-3">
  34. Default Billing Address
  35. </h2>
  36. ) : null}
  37. <div className="border border-gray-200 p-4">
  38. <p className="mb-1">{item.first_name + item.last_name}</p>
  39. <p className="mb-1">{item.address}</p>
  40. <p className="mb-1">{item.city + "," + item.postcode}</p>
  41. <p className="mb-1">{item.country}</p>
  42. <p className="mb-4">T: {item.phone}</p>
  43. <div className="text-right">
  44. <Link
  45. href={`/customer/address/eidt/${item.id}`}
  46. className="text-blue-600 underline hover:text-blue-800"
  47. >
  48. Change Billing Address
  49. </Link>
  50. </div>
  51. </div>
  52. </div>
  53. ))}
  54. </>
  55. );
  56. }