AddressScreen.jsx 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. import * as WebBrowser from 'expo-web-browser';
  2. import * as React from 'react';
  3. import { Div, Button, Image, Text, Avatar } from 'react-native-magnus';
  4. import { ScrollView } from 'react-native-gesture-handler';
  5. import { useRequest, useCreation } from '@umijs/hooks';
  6. import useModel from 'flooks';
  7. import AddressModel from './model'; // detail模块通用方法
  8. import Header from '../../components/Header';
  9. const AddressItem = ({ info, goNext }) => {
  10. return (
  11. <Div bg="white" px={15} py={10} my={5} mx={10}>
  12. <Text fontSize="xl" textAlign="left">
  13. {info.addressName}
  14. </Text>
  15. <Div row>
  16. <Text fontSize="xs" color="gray300" textAlign="left">
  17. {info.name}
  18. </Text>
  19. <Text fontSize="xs" color="gray300" textAlign="left">
  20. {info.sex}
  21. </Text>
  22. <Text ml={15} fontSize="xs" color="gray300" textAlign="left">
  23. {info.phone}
  24. </Text>
  25. </Div>
  26. <Div row justifyContent="flex-end">
  27. {info.isDefault && (
  28. <Button fontSize="xs" bg="brand500">
  29. 默认
  30. </Button>
  31. )}
  32. <Button
  33. fontSize="xs"
  34. ml={15}
  35. bg="white"
  36. color="gray600"
  37. borderColor="gray300"
  38. borderWidth={1}
  39. onPress={goNext}
  40. >
  41. 编辑
  42. </Button>
  43. </Div>
  44. </Div>
  45. );
  46. };
  47. export default function AddressScreen({ navigation }) {
  48. const { addressList, getAddressList } = useModel(AddressModel, [
  49. 'addressList',
  50. ]);
  51. const addressRequest = useRequest(getAddressList);
  52. return (
  53. <>
  54. <Header title="地址列表" />
  55. <ScrollView>
  56. {addressList.map((item) => {
  57. return (
  58. <AddressItem
  59. key={item.id}
  60. info={item}
  61. goNext={() => {
  62. navigation.navigate('EditAddress', {
  63. id: item.id,
  64. });
  65. }}
  66. />
  67. );
  68. })}
  69. </ScrollView>
  70. <Button
  71. block
  72. my={20}
  73. mx={15}
  74. bg="brand500"
  75. onPress={() => {
  76. navigation.navigate('EditAddress');
  77. }}
  78. >
  79. 新增地址
  80. </Button>
  81. </>
  82. );
  83. }