0.0.4 • Published 4 months ago

antd-form-table v0.0.4

Weekly downloads
-
License
MIT
Repository
github
Last release
4 months ago

Page Views Count

antd

开发者环境

node:10.15.0
npm:6.14.5

组件作用

antd-form-table用于解决在antd4.x下,当使用Form表单处理数据遇上Table时的增删查改操作
另外如果你需要支持antd2.x和antd3.x版本的可以点击这里获取

预览图

review.jpg

install

npm install antd-form-table

with Antd

import React from "react";
import { Form,Table } from "antd";
import FormTable from 'antd-form-table';

const Demo=(props)=>{
  const [form] = Form.useForm();
  const [list,setList] = useState([{name:'1',age:1}])
  const [formData,setFormData] = useState({
    list,
    id:'1121'
  })
  
  const createColumn=({formItemName,onAdd,onDel,onCopy})=> {
    let ret = [
      {
        align: 'center',
        dataIndex: '_rowKey',
        title:'_rowKey',
        width: 60,
        render: (text, record, index) => {
          return (
            <>
            {text}
            <Form.Item name={[formItemName,index,'_rowKey']} noStyle >
              <Input type='hidden' />
            </Form.Item>
            </>
          );
        },
      },
      {
        align: 'center',
        dataIndex: 'name',
        title:'name',
        width: 60,
        render: (text, record, index) => {
          return (
            <Form.Item name={[formItemName,index,'name']} >
              <Input />
            </Form.Item>
          );
        },
      },

      {
        align: 'center',
        dataIndex: 'age',
        title:'age',
        width: 60,
        render: (text, record, index) => {
          return (
            <Form.Item name={[formItemName,index,'age']} >
              <Input />
            </Form.Item>
          );
        },
      },
    ];
    ret.push({
      align: 'center',
      dataIndex: 'oper',
      title: '操作',
      width: 120,
      render: (text, record, index) => {
        return (
          <div>
          <span style={{marginRight:"12px"}} onClick={onDel.bind(this, record, index)} >
            删除
          </span>

          <span style={{marginRight:"12px"}}  onClick={onCopy.bind(this, record, index)}>
            复制
          </span>

          <span onClick={onAdd.bind(this, record, index)}>
            添加
          </span>
          </div>
          
        );
      },
    });
  
    return ret;
  };

  return (
    const {LIST} = this.state
    return (
      <section>       
        <Form form={form} initialValues={{...formData}}>
          <FormTable
            Table={Table}
            initialValue={list}
            form={form}
            formItemName='list'
            antTableOptions={{ bordered: true, pagination: false }}
            newdata={{
              name: '',
              age:''
            }}
            columns={createColumn}
            saveLast
          /> 
        </Form>
      </section>
    );
  )
}

ReactDOM.render(<Demo />, document.getElementById("container"));

API

参数说明类型默认值
Tableantd的Table对象Table-
initialValue初始的表格数据源Array-
formItemName字段名String-
form表单的form对象Form-
antTableOptionsantd Table组件的参数,参考antd文档Object-
newdata新增一条数据的数据模板Object-
columns同antd table的columnsFunction({onDel,onCopy,onAdd})=>void-
onChange当数据发生变化时的回调(value)=>void-
onAdd当触发添加事件时的消息拦截,返回的是被创建的新数据项,如果返回空则不添加数据(record,index)=>object-
saveLast是否在没数据的时候始终保持一条空数据Booleanfalse

组件内部可用方法,可以通过ref使用组件内部方法

参数说明类型默认值
onReset重置表单内数据(arr?:object[])=>void-

更新日志