1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- import React, { useState, useRef } from 'react';
- import { Form, Col, Row, Button, ArrayField, Space } from '@douyinfe/semi-ui';
- import { IconMinusCircle, IconPlusCircle } from '@douyinfe/semi-icons';
- function BasicArrayFieldDemo() {
- const formRef = useRef();
- const formInitValues = {
- data: [
- { name: 'Semi D2C', role: 'Engineer' },
- { name: 'Semi C2D', role: 'Designer' },
- ]
- };
- const logValues = () => {
- console.log(formRef.current.formApi.getValues().data);
- };
- return (
- <Form ref={formRef} initValues={formInitValues}>
- <ArrayField field="data">
- {({ add, addWithInitValue, arrayFields }) => (
- <React.Fragment>
- <Space>
- <Button id='add' onClick={add} icon={<IconPlusCircle />} type="primary">Add</Button>
- <Button
- id='addWithInit'
- onClick={() => addWithInitValue({ name: `Semi New-${arrayFields.length + 1}`, role: 'Designer' })}
- icon={<IconPlusCircle />}
- type="primary">
- Add with row initValue
- </Button>
- </Space>
- {
- arrayFields.map(({ field, key, remove }, i) => (
- <div key={key} style={{ display: 'flex', width: 600 }} id={`data-${i}`} className='line'>
- <Space>
- <Form.Input
- id={`data-${i}-name`}
- field={`${field}[name]`}
- label={`${field}.name`}
- style={{ width: 200 }}
- />
- <Form.Input
- id={`data-${i}-role`}
- field={`${field}[role]`}
- label={`${field}.role`}
- style={{ width: 200 }}
- />
- </Space>
- <Button style={{ margin: "36px 0 0 12px" }} type="danger" icon={<IconMinusCircle/>} onClick={remove}>remove this line</Button>
- </div>
- ))
- }
- <Button htmlType='reset'>Reset</Button>
- </React.Fragment>
- )}
- </ArrayField>
- <div>
- <Button onClick={() => logValues()} id='log'>logValues</Button>
- </div>
- </Form>
- );
- }
- BasicArrayFieldDemo.storyName = 'ArrayField-Basic Usage';
- export default BasicArrayFieldDemo;
|