fieldRef.jsx 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  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. } from '../../index';
  16. import {
  17. UseFormApiDemo,
  18. UseFormStateDemo,
  19. UseFieldApiDemo,
  20. UseFieldStateDemo,
  21. WithFormStateDemo,
  22. WithFormApiDemo,
  23. ComponentUsingFormState,
  24. CustomStringify
  25. } from '../Hook/hookDemo';
  26. const { Input, Select, DatePicker, Switch, Slider, CheckboxGroup, Checkbox, RadioGroup, Radio, TimePicker } = Form;
  27. const FieldRefDemo = () => {
  28. const fieldRef = useRef(null);
  29. const inputRef = useRef(null);
  30. const [open, setOpen] = useState(false);
  31. const onChange = () => {
  32. console.log(fieldRef);
  33. if (open) {
  34. fieldRef.current && fieldRef.current.close();
  35. setOpen(false);
  36. } else {
  37. fieldRef.current && fieldRef.current.open();
  38. setOpen(true);
  39. }
  40. };
  41. const focus = () => {
  42. inputRef.current && inputRef.current.focus();
  43. };
  44. return (
  45. <Form>
  46. <Form.Input
  47. field="name"
  48. label="名称"
  49. ref={inputRef}
  50. rules={[
  51. { required: true, message: 'required error' },
  52. { type: 'string', message: 'type error' },
  53. { validator: (rule, value) => value === 'muji', message: 'not muji' }
  54. ]}
  55. />
  56. <Button onClick={onChange}>toggleOpen</Button>
  57. <Button onClick={focus}>focus Input</Button>
  58. <Form.Select field="role" label="角色" placeholder="请选择你的角色" ref={fieldRef}>
  59. <Form.Select.Option value="operate">运营</Form.Select.Option>
  60. <Form.Select.Option value="rd">开发</Form.Select.Option>
  61. <Form.Select.Option value="pm">产品</Form.Select.Option>
  62. <Form.Select.Option value="ued">设计</Form.Select.Option>
  63. </Form.Select>
  64. </Form>
  65. );
  66. };
  67. export { FieldRefDemo };