/* eslint-disable */ import React, { useState, useLayoutEffect, Component } from 'react'; import { storiesOf } from '@storybook/react'; import { Button, Modal, TreeSelect, Row, Col, Avatar, Select as BasicSelect, Form, useFormState, useFormApi, useFieldApi, useFieldState, withFormState, withFormApi, withField, ArrayField, AutoComplete, Collapse, Space, Icon } from '../../../index'; import { ComponentUsingFormState } from '../Hook/hookDemo'; const { Input, Select, DatePicker, Switch, Slider, CheckboxGroup, Checkbox, RadioGroup, Radio, TimePicker, InputNumber, InputGroup } = Form; class ArrayFieldCollapseDemo extends React.Component { constructor() { super(); this.state = { actions: [], }; } renderItems(arrayFields, values) { console.log(values); return ( {JSON.stringify(values)} {arrayFields.map(({ field, key, remove }, i) => ( ))} {/* {arrayFields.length && values.actions[0].name ? '2' : '1'} */} ); } render() { let { actions } = this.state; return (
{({ values }) => ( {({ add, arrayFields }) => ( {this.renderItems(arrayFields, values)} )} )}
); } } // 使用Form Props设置 ArrayField的initValues class ArrayFieldWithFormInitValues extends React.Component { constructor() { super(); this.state = { data: { c: 'c', effects: [ { name: 'form-level-init-sugar', time: 'form-level-init-3min', otherKey: 1 }, { name: 'form-level-init-bacon', time: 'form-level-init-6min', otherKey: 2, key: 343 }, ], }, flag: true }; this.getFormApi = this.getFormApi.bind(this); this.change = this.change.bind(this); } change = () => { let number = this.formApi.getValue('number'); let newData = Array.from({ length: 2 }, (v, i) => ({ name: `${i}-name`, time: `${i}-time` })); console.log(newData); this.formApi.setValue('effects', newData); } getFormApi(formApi) { this.formApi = formApi; } render() { return (
console.log('onchange:' + v)} onValueChange={(...v) => console.log('onValueChange:' + v)} getFormApi={this.getFormApi} initValues={this.state.data} > {/* */} {({ add, arrayFields }) => ( { arrayFields.map(({ field, key, remove }, i) => (
)) }
)}
); } } // 使用 ArrayField props initValue来设置初始值 class ArrayFieldWithInitValue extends React.Component { constructor() { super(); this.state = { data: { effects: [ { name: 'arrayField-props.initValue-0-name', time: 'arrayField-props.initValue-0-time', otherKey: 1 }, { name: 'arrayField-props.initValue-1-name', time: 'arrayField-props.initValue-1-time', otherKey: 453 }, ], }, flag: true }; this.getFormApi = this.getFormApi.bind(this); this.change = this.change.bind(this); } change = () => { let number = this.formApi.getValue('number'); let newData = Array.from({ length: 2 }, (v, i) => ({ name: `${i}-name`, time: `${i}-time` })); console.log(newData); this.formApi.setValue('effects', newData); } getFormApi(formApi) { this.formApi = formApi; } render() { const { effects } = this.state.data; return (
console.log('onchange:' + v)} onValueChange={(...v) => console.log('onValueChange:' + v)} getFormApi={this.getFormApi} > {/* */} {({ add, arrayFields }) => ( { arrayFields.map(({ field, key, remove }, i) => (
)) }
)}
{/* */} {/* */}
); } } /* basic usage */ class ArrayFieldDemo extends React.Component { constructor() { super(); this.state = { data: { c: 'c', test: [ // {}, // {}, { name: 'sugar', time: '3min' }, // { name: 'bacon', time: '6min', key: 'c2' }, { name: 'bacon', time: '6min' }, ], }, flag: true }; this.getFormApi = this.getFormApi.bind(this); } change = () => { let number = this.formApi.getValue('number'); let newData = Array.from({ length: number }, (v, i) => ({ name: `${i}-name`, time: `${i}-time` })); this.formApi.setValue('effects', newData); } clear = () => { // this.formApi.setValues({ number: 3 }); // this.formApi.setValues({}, { isOverride: true }); this.formApi.setValues({ number: 3 }, { isOverride: true }); } getFormApi(formApi) { this.formApi = formApi; } render() { return (
console.log(v)} onValueChange={(...v) => console.log(v)} getFormApi={this.getFormApi}> {({ add, arrayFields }) => ( { arrayFields.map(({ field, key, remove }, i) => (
)) }
)}
); } } export { ArrayFieldCollapseDemo, ArrayFieldDemo, ArrayFieldWithFormInitValues, ArrayFieldWithInitValue };