Comment.jsx 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. import * as WebBrowser from 'expo-web-browser';
  2. import * as React from 'react';
  3. import { StyleSheet, FlatList, RefreshControl } from 'react-native';
  4. import { ScrollView } from 'react-native-gesture-handler';
  5. import { Div, Image, Text, Icon, Tag } from 'react-native-magnus';
  6. import { useRequest } from '@umijs/hooks';
  7. import useModel from 'flooks';
  8. import Detail from './model';
  9. import DetailHeader from './DetailHeader';
  10. import CommentItem from './CommentCom';
  11. const AppraisalSortMap = new Map([
  12. [
  13. 'ALL',
  14. {
  15. name: '全部',
  16. },
  17. ],
  18. [
  19. 'LATEST',
  20. {
  21. name: '最新',
  22. },
  23. ],
  24. [
  25. 'PRAISE',
  26. {
  27. name: '好评',
  28. },
  29. ],
  30. [
  31. 'BAD_REVIEW',
  32. {
  33. name: '差评',
  34. isBad: true,
  35. },
  36. ],
  37. [
  38. 'HAVE_PIC',
  39. {
  40. name: '有图',
  41. },
  42. ],
  43. ]);
  44. export default function Comment() {
  45. const { id } = useModel(Detail, ['id']);
  46. const [comments, setcomments] = React.useState([]);
  47. const [appraisalSort, setappraisalSort] = React.useState('ALL');
  48. const appraisalRequest = useRequest(
  49. `/appraisal/my?merchantId=${id}&appraisalSort=${appraisalSort}`,
  50. {
  51. refreshDeps: [id, appraisalSort],
  52. onSuccess: (result) => {
  53. setcomments(result);
  54. },
  55. }
  56. );
  57. return (
  58. <>
  59. <Div row p={15}>
  60. {[...AppraisalSortMap.keys()].map((item) => {
  61. const info = AppraisalSortMap.get(item);
  62. const isChoose = appraisalSort === item;
  63. return (
  64. <Tag
  65. key={item}
  66. bg={isChoose ? 'brand500' : info.isBad ? 'gray200' : 'brand100'}
  67. color={isChoose ? 'white' : info.isBad ? 'gray500' : 'brand500'}
  68. fontSize="sm"
  69. mr={5}
  70. mb={5}
  71. onPress={() => setappraisalSort(item)}
  72. >
  73. {info.name}
  74. </Tag>
  75. );
  76. })}
  77. </Div>
  78. {comments.map((item) => {
  79. return <CommentItem info={item} key={item.goodsAppraise} />;
  80. })}
  81. {comments.length === 0 && (
  82. <Div px={10} py={20}>
  83. <Text color="gray300" textAlign="center">
  84. 暂无数据
  85. </Text>
  86. </Div>
  87. )}
  88. </>
  89. );
  90. }