import React, { useState, useRef } from 'react'; import { Form, Col, Row, Button, ArrayField, Space, useFormState } from '@douyinfe/semi-ui'; import { IconMinusCircle, IconPlusCircle, IconRefresh } from '@douyinfe/semi-icons'; import { JSONTree } from 'react-json-tree'; // TODO // Async setValues // Sync setValues // Async setValues, override // Sync setValues, override // 0 -> 3 // 3 -> 0 // 3 -> 2 // 2 -> 3 const FormStateTree = () => { const formState = useFormState(); return ( true} hideRoot data={formState} /> ); }; function SetValues() { const formRef = useRef(); const formInitValues = { data: [ { name: 'Semi D2C', role: 'Engineer' }, { name: 'Semi C2D', role: 'Designer' }, // { name: 'Semi DSM', role: 'Designer' }, ] }; const getFormApi = () => { const formApi = formRef.current.formApi; return formApi; }; const setValuesAsync = () => { const formApi = getFormApi(); // setTimeout(() => { formApi.setValues({ data: [ { name: 'Semi D2C-0', role: 'Engineer-0' }, { name: 'Semi C2D-1', role: 'Designer' }, ] }, { isOverride: true }); // }, 200); }; const removeHeadAsync = () => { const formApi = getFormApi(); // setTimeout(() => { formApi.setValues({ data: [ { name: 'Semi C2D', role: 'Designer' }, { name: 'Semi DSM', role: 'Designer' }, ] }, { isOverride: true }); // }, 200); }; const removeTailAsync = () => { const formApi = getFormApi(); // setTimeout(() => { formApi.setValues({ data: [ { name: 'Semi D2C', role: 'Engineer' }, { name: 'Semi C2D', role: 'Designer' }, ] }, { isOverride: true }); // }, 200); }; const removeMiddleAsync = () => { const formApi = getFormApi(); // setTimeout(() => { formApi.setValues({ data: [ { name: 'Semi D2C', role: 'Engineer' }, { name: 'Semi DSM', role: 'Designer' }, ] }, { isOverride: true }); // }, 200); }; const removeAllAsync = () => { const formApi = getFormApi(); // setTimeout(() => { formApi.setValues({}, { isOverride: true }); // }, 200); }; const addHeadAsync = () => { const formApi = getFormApi(); // setTimeout(() => { formApi.setValues({ data: [ { name: 'Semi DSM', role: 'Designer' }, { name: 'Semi D2C', role: 'Engineer' }, { name: 'Semi C2D', role: 'Designer' }, ] }, { isOverride: true }); // }, 200); }; const addMiddleAsync = () => { const formApi = getFormApi(); // setTimeout(() => { formApi.setValues({ data: [ { name: 'Semi D2C', role: 'Engineer' }, { name: 'Semi DSM', role: 'Designer' }, { name: 'Semi C2D', role: 'Designer' }, ] }, { isOverride: true }); // }, 200); }; const addTailAsync = () => { const formApi = getFormApi(); // setTimeout(() => { formApi.setValues({ data: [ { name: 'Semi D2C', role: 'Engineer' }, { name: 'Semi C2D', role: 'Designer' }, { name: 'Semi DSM', role: 'Designer' }, ] }, { isOverride: true }); // }, 200); }; return (
{({ add, addWithInitValue, arrayFields }) => ( { arrayFields.map(({ field, key, remove }, i) => (
)) }
)}
); } SetValues.storyName = 'ArrayField-ManualBatchSet Sync'; export default SetValues;