动态菜单和动态路由的 antd pro

NoticeList.js 1.7KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. import React from 'react';
  2. import { Avatar, List } from 'antd';
  3. import classNames from 'classnames';
  4. import styles from './NoticeList.less';
  5. export default function NoticeList({
  6. data = [],
  7. onClick,
  8. onClear,
  9. title,
  10. locale,
  11. emptyText,
  12. emptyImage,
  13. }) {
  14. if (data.length === 0) {
  15. return (
  16. <div className={styles.notFound}>
  17. {emptyImage ? <img src={emptyImage} alt="not found" /> : null}
  18. <div>{emptyText || locale.emptyText}</div>
  19. </div>
  20. );
  21. }
  22. return (
  23. <div>
  24. <List className={styles.list}>
  25. {data.map((item, i) => {
  26. const itemCls = classNames(styles.item, {
  27. [styles.read]: item.read,
  28. });
  29. return (
  30. <List.Item className={itemCls} key={item.key || i} onClick={() => onClick(item)}>
  31. <List.Item.Meta
  32. className={styles.meta}
  33. avatar={item.avatar ? <Avatar className={styles.avatar} src={item.avatar} /> : null}
  34. title={
  35. <div className={styles.title}>
  36. {item.title}
  37. <div className={styles.extra}>{item.extra}</div>
  38. </div>
  39. }
  40. description={
  41. <div>
  42. <div className={styles.description} title={item.description}>
  43. {item.description}
  44. </div>
  45. <div className={styles.datetime}>{item.datetime}</div>
  46. </div>
  47. }
  48. />
  49. </List.Item>
  50. );
  51. })}
  52. </List>
  53. <div className={styles.clear} onClick={onClear}>
  54. {locale.clear}
  55. {title}
  56. </div>
  57. </div>
  58. );
  59. }