4-manualSetUsage.jsx 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import React, { useState, useRef } from 'react';
  2. import { Form, Col, Row, Button, ArrayField, Space } from '@douyinfe/semi-ui';
  3. import { IconMinusCircle, IconPlusCircle } from '@douyinfe/semi-icons';
  4. function ManualSetDemo() {
  5. const formRef = useRef();
  6. const formInitValues = {
  7. data: [
  8. { name: 'Semi D2C', role: 'Engineer' },
  9. { name: 'Semi C2D', role: 'Designer' },
  10. // { name: 'Semi DSM', role: 'Designer' },
  11. ]
  12. };
  13. const setValue = () => {
  14. const formApi = formRef.current.formApi;
  15. };
  16. return (
  17. <Form ref={formRef} initValues={formInitValues}>
  18. <ArrayField field="data">
  19. {({ add, addWithInitValue, arrayFields }) => (
  20. <React.Fragment>
  21. <Space>
  22. <Button id='add' onClick={add} icon={<IconPlusCircle />} type="primary">Add</Button>
  23. <Button
  24. id='addWithInit'
  25. onClick={() => addWithInitValue({ name: `Semi New-${arrayFields.length + 1}`, role: 'Designer' })}
  26. icon={<IconPlusCircle />}
  27. type="primary">
  28. Add with row initValue
  29. </Button>
  30. </Space>
  31. {
  32. arrayFields.map(({ field, key, remove }, i) => (
  33. <div key={key} style={{ display: 'flex', width: 600 }} id={`data-${i}`} className='line'>
  34. <Space>
  35. <Form.Input
  36. id={`data-${i}-name`}
  37. field={`${field}[name]`}
  38. label={`${field}.name`}
  39. style={{ width: 200 }}
  40. />
  41. <Form.Input
  42. id={`data-${i}-role`}
  43. field={`${field}[role]`}
  44. label={`${field}.role`}
  45. style={{ width: 200 }}
  46. />
  47. </Space>
  48. <Button style={{ margin: "36px 0 0 12px" }} type="danger" icon={<IconMinusCircle/>} onClick={remove}>remove this line</Button>
  49. </div>
  50. ))
  51. }
  52. <Button htmlType='reset'>Reset</Button>
  53. </React.Fragment>
  54. )}
  55. </ArrayField>
  56. </Form>
  57. );
  58. }
  59. ManualSetDemo.storyName = 'ArrayField-ManualSet';
  60. export default ManualSetDemo;