Classification.jsx 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. import * as WebBrowser from 'expo-web-browser';
  2. import * as React from 'react';
  3. import { StyleSheet, FlatList } from 'react-native';
  4. import { Div, Text } from 'react-native-magnus';
  5. import { TouchableRipple } from 'react-native-paper';
  6. import { useRequest } from '@umijs/hooks';
  7. import useModel from 'flooks';
  8. import Detail from './model';
  9. function Item({ name, isChoose, select }) {
  10. return (
  11. <TouchableRipple onPress={select}>
  12. <Div py={10} px={20} bg={isChoose ? 'white' : ''}>
  13. <Text color={isChoose ? 'brand500' : ''}>{name}</Text>
  14. </Div>
  15. </TouchableRipple>
  16. );
  17. }
  18. export default function Classification() {
  19. const { id, selectClass, changeSelectClass } = useModel(Detail, [
  20. 'id',
  21. 'selectClass',
  22. ]);
  23. const [classifications, setclassifications] = React.useState([]);
  24. useRequest(
  25. () => {
  26. const params = {
  27. query: {
  28. merchantId: id,
  29. page: 0,
  30. size: 100,
  31. },
  32. };
  33. const urls = Object.keys(params).map((item) => {
  34. return `${item}=${encodeURI(JSON.stringify(params[item]))}`;
  35. });
  36. return `/classification/all?${urls.join('&')}`;
  37. },
  38. {
  39. refreshDeps: [id],
  40. onSuccess: (result) => {
  41. setclassifications(result.content);
  42. if (!result.empty) {
  43. changeSelectClass(result.content[0].id);
  44. }
  45. },
  46. }
  47. );
  48. // classification;
  49. return (
  50. <FlatList
  51. style={styles.left}
  52. data={classifications}
  53. renderItem={({ item }) => (
  54. <Item
  55. name={item.name}
  56. isChoose={selectClass === item.id}
  57. select={() => {
  58. changeSelectClass(item.id);
  59. }}
  60. />
  61. )}
  62. keyExtractor={(item) => item.id}
  63. extraData={selectClass}
  64. />
  65. );
  66. }
  67. const styles = StyleSheet.create({
  68. left: {
  69. width: 95,
  70. maxWidth: 95,
  71. paddingBottom: 100,
  72. },
  73. item: {
  74. paddingHorizontal: 15,
  75. paddingVertical: 10,
  76. },
  77. });