index.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import React, { useState } from 'react';
  2. import { Nav, Button } from '@douyinfe/semi-ui';
  3. import { IconUser, IconStar, IconUserGroup, IconEdit, IconApps, IconSetting } from '@douyinfe/semi-icons';
  4. function AppNav({ shouldRender = true }) {
  5. const [selectedKeys, setSelectedKeys] = useState([]);
  6. const navItems = [
  7. { itemKey: 'user', text: '用户管理', icon: <IconUser /> },
  8. { itemKey: 'union', text: '公会中心', icon: <IconStar /> },
  9. {
  10. itemKey: 'union-management',
  11. text: '公会管理',
  12. icon: <IconUserGroup />,
  13. items: ['公告设置', '公会查询', '信息录入'],
  14. },
  15. {
  16. itemKey: 'approve-management',
  17. text: '审批管理',
  18. icon: <IconEdit />,
  19. items: [
  20. '入驻审核',
  21. {
  22. itemKey: 'operation-management',
  23. text: '运营管理',
  24. items: ['人员管理', '人员变更'],
  25. },
  26. ],
  27. },
  28. {
  29. text: '任务平台',
  30. icon: <IconSetting />,
  31. itemKey: 'job',
  32. items: ['任务管理', '用户任务查询'],
  33. },
  34. ];
  35. const onSelect = ({ itemKey }) => {
  36. setSelectedKeys([itemKey]);
  37. };
  38. return shouldRender ? <Nav items={navItems} selectedKeys={selectedKeys} onSelect={onSelect} /> : null;
  39. }
  40. function Demo() {
  41. const [shouldRender, setShouldRender] = useState(true);
  42. return (
  43. <div>
  44. <div>
  45. <Button onClick={() => setShouldRender(!shouldRender)}>Rerender</Button>
  46. </div>
  47. <AppNav shouldRender={shouldRender} />
  48. </div>
  49. );
  50. }
  51. export default Demo;