index.jsx 1.2KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import React from 'react';
  2. import { Button, Drawer, Image } from 'antd';
  3. import Emoji from './Emoji';
  4. export default function EmojiSelect(props) {
  5. const { value, onChange } = props;
  6. const [open, setOpen] = React.useState(false);
  7. const [current, setCurrent] = React.useState(value);
  8. const handleChange = src => {
  9. setCurrent(src);
  10. }
  11. const onSubmit = () => {
  12. setOpen(false);
  13. onChange(current);
  14. }
  15. React.useEffect(() => {
  16. setCurrent(value);
  17. }, [value])
  18. return (
  19. <div>
  20. {
  21. value
  22. ? <Image src={getRealPath(value)} style={{ width: '48px', height: '48px' }} preview={false} onClick={() => setOpen(true)} />
  23. : <Button type="primary" onClick={() => setOpen(true)}>选择图标</Button>
  24. }
  25. <Drawer
  26. title="图标选择"
  27. width='60vw'
  28. open={open}
  29. placement="right"
  30. extra={(
  31. <Button type="primary" onClick={onSubmit} disabled={!current || (value && value == current)}>
  32. 确定
  33. </Button>
  34. )}
  35. onClose={() => setOpen(false)}
  36. >
  37. <Emoji onChange={handleChange} value={current} />
  38. </Drawer>
  39. </div>
  40. );
  41. }