3.1.3 • Published 5 months ago

@ppeng/form-relation v3.1.3

Weekly downloads
-
License
ISC
Repository
-
Last release
5 months ago

form-relation

能控制各个字段之间联动的表单!

Usage

import { Form, Select } from 'form-relation';

const Test = () => {
    const formProps = {} // 与antd Form组件props一致
    const [form] = Form.useForm()
    const relationInfo: FormRelationType[] = [
        {
            conditions: [{
                key: 'item-1', // Form Item的name属性
                value: 'value-1-1' // 可支持回调函数: (val, allFormData) => boolean
            }],
            // 当表单项1的值为value-1-1时,表单项2的可选项只有value-2-2和value-2-3
            // 且表单项2如果之前选择了value-2-1,则需要把值重置为value-2-2
            relation: {
                'item-2': {
                    disableOptions: ['value-2-1'],
                    resetValue: 'value-2-2'
                }
            }
        }, 
        {
            conditions: [{
                key: 'item-2',
                value: 'value-2-2'
            }],
            // 当表单项2的值为value-2-2时,表单项3的值需要重置为value-3-1
            relation: {
                'item-3': {
                    resetValue: 'value-3-1'
                }
            }
        },
        {
            conditions: [{
                key: 'item-3',
                value: 'value-3-2'
            }],
            // 当表单项3的值为value-3-2时,表单项4不可用,且要隐藏和清空值
            relation: {
                'item-4': false
            }
        }
    ]
    const onRelationValueChange = (effect) => {
        console.log('1s后 表单项3的值为value-3-1!!', effect['item-3'] === 'value-3-1')
    }
    useEffect(() => {
        setTimeout(() => {
            form.setFieldsValue({
                ‘item-2’: 'value-2-2'
            })
            console.log('1s后 单项2的值被修改为:value-2-2')
        }, 1000)
    }, [])
    return <Form
        form={form}
        relationInfo={relationInfo}
        onRelationValueChange={onRelationValueChange}
    >
        <Form.Item name='item-1'>
            <Select>
                <Select.Option value='value-1-1'></Select.Option>
                <Select.Option value='value-1-2'></Select.Option>
            </Select>
        </Form.Item>
        <Form.Item name='item-2'>
            <Select>
                <Select.Option value='value-2-1'></Select.Option>
                <Select.Option value='value-2-2'></Select.Option>
                <Select.Option value='value-2-3'></Select.Option>
            </Select>
        </Form.Item>
        <Form.Item name='item-3'>
            <Select>
                <Select.Option value='value-3-1'></Select.Option>
                <Select.Option value='value-3-2'></Select.Option>
            </Select>
        </Form.Item>
        <Form.Item name='item-4'>
            <Select>
                <Select.Option value='value-4-1'></Select.Option>
                <Select.Option value='value-4-2'></Select.Option>
            </Select>
        </Form.Item>
    </Form>
}

// TODO: DEMONSTRATE API
3.1.3

5 months ago

3.1.2

6 months ago

3.1.1

6 months ago

3.1.0

6 months ago

3.0.0

7 months ago

2.3.0

8 months ago

2.2.0

1 year ago

2.1.1

1 year ago

2.0.2

1 year ago

2.1.0

1 year ago

2.0.1

1 year ago

2.0.0

1 year ago

1.0.9

1 year ago

1.0.8

1 year ago

1.0.7

1 year ago

1.0.6

2 years ago

1.0.5

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago