index.jsx 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. import { Dropdown, Tag, Switch } from '@douyinfe/semi-ui';
  2. import React, { useState } from 'react';
  3. const log = console.log;
  4. function Demo() {
  5. const [clickToHide, setClickToHide] = useState(true);
  6. const [dropdownVisible, setDropdownVisible] = useState(false);
  7. const [visible, setVisible] = useState(false);
  8. return (
  9. <div style={{ margin: 50 }}>
  10. <div>
  11. <div>
  12. <label>点击后是否自动关闭</label>
  13. <Switch
  14. checked={clickToHide}
  15. onChange={v => {
  16. setClickToHide(v);
  17. }}
  18. />
  19. </div>
  20. <Dropdown
  21. clickToHide={clickToHide}
  22. onVisibleChange={v => {
  23. log('dropdown1 visible changed to: ', v);
  24. }}
  25. position={'bottomLeft'}
  26. trigger="click"
  27. render={
  28. <Dropdown.Menu>
  29. {[1, 2, 3].map(index => (
  30. <Dropdown.Item key={index} onClick={() => log('Dropdown.Item closed: ', index)}>
  31. Menu Item {index}
  32. </Dropdown.Item>
  33. ))}
  34. </Dropdown.Menu>
  35. }
  36. >
  37. <Tag>Click Me</Tag>
  38. </Dropdown>
  39. </div>
  40. <div>
  41. <div>
  42. <label>手动控制点击选项后关闭</label>
  43. </div>
  44. <Dropdown
  45. position={'bottomLeft'}
  46. trigger="click"
  47. visible={dropdownVisible}
  48. onVisibleChange={v => {
  49. log('dropdown2 visible changed to: ', v);
  50. setDropdownVisible(v);
  51. }}
  52. render={
  53. <Dropdown.Menu>
  54. {[1, 2, 3].map(index => (
  55. <Dropdown.Item key={index} onClick={() => setDropdownVisible(false)}>
  56. Menu Item {index}
  57. </Dropdown.Item>
  58. ))}
  59. </Dropdown.Menu>
  60. }
  61. >
  62. <Tag>Click Me</Tag>
  63. </Dropdown>
  64. </div>
  65. <div>
  66. <div>
  67. <label>完全控制浮层显隐</label>
  68. </div>
  69. <Dropdown
  70. position={'bottomLeft'}
  71. trigger="custom"
  72. visible={visible}
  73. onVisibleChange={v => {
  74. log('dropdown3 visible changed to: ', v);
  75. // setVisible(v);
  76. }}
  77. render={
  78. <Dropdown.Menu>
  79. {[1, 2, 3].map(index => (
  80. <Dropdown.Item key={index} onClick={() => setVisible(false)}>
  81. Menu Item {index}
  82. </Dropdown.Item>
  83. ))}
  84. </Dropdown.Menu>
  85. }
  86. >
  87. <Tag onClick={() => setVisible(!visible)}>Click Me</Tag>
  88. </Dropdown>
  89. </div>
  90. <div>
  91. <div>
  92. <label>hover展示+选择选项后自动关闭</label>
  93. </div>
  94. <Dropdown
  95. clickToHide
  96. position={'bottomLeft'}
  97. trigger="hover"
  98. onVisibleChange={v => {
  99. log('dropdown3 visible changed to: ', v);
  100. // setVisible(v);
  101. }}
  102. render={
  103. <Dropdown.Menu>
  104. {[1, 2, 3].map(index => (
  105. <Dropdown.Item key={index}>Menu Item {index}</Dropdown.Item>
  106. ))}
  107. </Dropdown.Menu>
  108. }
  109. >
  110. <Tag>Hover Me</Tag>
  111. </Dropdown>
  112. </div>
  113. </div>
  114. );
  115. }
  116. export default Demo;