fieldRef.jsx 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. /* eslint-disable no-unused-vars */
  2. import React, { useState, useLayoutEffect, useEffect, useRef } from 'react';
  3. import { storiesOf } from '@storybook/react';
  4. import { Button, Modal, TreeSelect, Row, Col, Avatar, Tabs, TabPane, Badge } from '@douyinfe/semi-ui';
  5. import {
  6. Form,
  7. useFormState,
  8. useFormApi,
  9. useFieldApi,
  10. useFieldState,
  11. withFormState,
  12. withFormApi,
  13. withField,
  14. ArrayField,
  15. Icon
  16. } from '../../index';
  17. import {
  18. UseFormApiDemo,
  19. UseFormStateDemo,
  20. UseFieldApiDemo,
  21. UseFieldStateDemo,
  22. WithFormStateDemo,
  23. WithFormApiDemo,
  24. ComponentUsingFormState,
  25. CustomStringify
  26. } from '../Hook/hookDemo';
  27. const { Input, Select, DatePicker, Switch, Slider, CheckboxGroup, Checkbox, RadioGroup, Radio, TimePicker } = Form;
  28. const FieldRefDemo = () => {
  29. const fieldRef = useRef(null);
  30. const inputRef = useRef(null);
  31. const [open, setOpen] = useState(false);
  32. const onChange = () => {
  33. console.log(fieldRef);
  34. if (open) {
  35. fieldRef.current && fieldRef.current.close();
  36. setOpen(false);
  37. } else {
  38. fieldRef.current && fieldRef.current.open();
  39. setOpen(true);
  40. }
  41. };
  42. const focus = () => {
  43. inputRef.current && inputRef.current.focus();
  44. };
  45. return (
  46. <Form>
  47. <Form.Input
  48. field="name"
  49. label="名称"
  50. ref={inputRef}
  51. rules={[
  52. { required: true, message: 'required error' },
  53. { type: 'string', message: 'type error' },
  54. { validator: (rule, value) => value === 'muji', message: 'not muji' }
  55. ]}
  56. />
  57. <Button onClick={onChange}>toggleOpen</Button>
  58. <Button onClick={focus}>focus Input</Button>
  59. <Form.Select field="role" label="角色" placeholder="请选择你的角色" ref={fieldRef}>
  60. <Form.Select.Option value="operate">运营</Form.Select.Option>
  61. <Form.Select.Option value="rd">开发</Form.Select.Option>
  62. <Form.Select.Option value="pm">产品</Form.Select.Option>
  63. <Form.Select.Option value="ued">设计</Form.Select.Option>
  64. </Form.Select>
  65. </Form>
  66. );
  67. };
  68. export { FieldRefDemo };