antd动态添加表单_antd基于Form的自定义Input组件写法

本文介绍了一个基于antd Form组件的自定义InputClear组件,详细讲解如何实现动态添加表单并允许用户清除输入内容。通过组件的onChange、onFocus、onBlur等事件处理,实现了输入值的同步与清除功能。
摘要由CSDN通过智能技术生成

好久没写博客了,以前一直写vue,18年最后一个季度又开始经常写react,这次写一个基于antd form组件的自定义Input组件,写一个最简单的,让刚接触antd的小伙伴们能快速的了解基于form组件的自定义Input组件该如何入手。

import React, { PureComponent } from 'react';

import { Input, Icon } from 'antd';

class InputClear extends PureComponent {

constructor(props) {

super(props);

this.state = {

isShow: false,

v: '',

timer: null

};

}

componentDidMount() {

this.setState({

v: this.props.value || ''

});

}

UNSAFE_componentWillReceiveProps(nextProps) {

if ('value' in nextProps) {

this.setState({

v: nextProps.value

});

}

}

componentWillUnmount() {

clearTimeout(this.state.timer);

this.setState({

timer: null

});

}

handleFocus = (e) => {

let value = e.target.value;

this.setState({ isShow: !!value });

}

handleChange = (e) => {

const { onChange } = this.props;

if (onChange) onChange(e.target.value);

this.handleFocus(e);

}

clearInput = () => {

const { isNeedClear, onChange } = this.props;

if (isNeedClear && onChange) {

onChange('');

}

this.setState({

isShow: false

});

}

handleBlur = () => {

this.state.timer = setTimeout(() => {

this.setState({

isShow: false

});

}, 200);

}

render() {

const { isShow, v } = this.state;

return (

suffix={isShow ? : null}

autoComplete="off"

placeholder="请输入"

onFocus={this.handleFocus}

onBlur={this.handleBlur}

onChange={this.handleChange}

value={v}

/>

);

}

}

export default InputClear;

这是一个在输入框里动态添加取消输入框里面的内容的组件,有几个要素,第一就是onchange事件需要回调给form,第二个就是componentWillReceiveProps里需要把输入值传给组件,componentDidMount是用来回显初始值的,还有一点是组件不能使函数式组件。

如果大家有更好的想法欢迎和我一起讨论哦,技术不分国界不分年龄,一起探讨,一起进步~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在React项目中使用Ant Design的Table组件动态生成表头,需要完成以下步骤: 1. 定义表格数据源 首先需要定义表格的数据源,可以使用一个数组来存储表格的数据,例如: ```javascript const data = [ { key: '1', name: 'John Brown', age: 32, address: 'New York No. 1 Lake Park', }, { key: '2', name: 'Jim Green', age: 42, address: 'London No. 1 Lake Park', }, { key: '3', name: 'Joe Black', age: 32, address: 'Sidney No. 1 Lake Park', }, ]; ``` 2. 定义表头数据源 接下来需要定义表头的数据源,可以使用一个数组来存储表头的数据,例如: ```javascript const columns = [ { title: 'Name', dataIndex: 'name', key: 'name', }, { title: 'Age', dataIndex: 'age', key: 'age', }, { title: 'Address', dataIndex: 'address', key: 'address', }, ]; ``` 3. 动态生成表头 在Ant Design的Table组件中,可以使用columns属性来指定表头数据源。为了动态生成表头,需要在渲染组件动态生成表头的数据源,并将其传递给Table组件的columns属性,例如: ```javascript import React, { useState } from 'react'; import { Table } from 'antd'; const DynamicTable = () => { const [columns, setColumns] = useState([ { title: 'Name', dataIndex: 'name', key: 'name', }, { title: 'Age', dataIndex: 'age', key: 'age', }, { title: 'Address', dataIndex: 'address', key: 'address', }, ]); const handleAddColumn = () => { const newColumn = { title: `Column ${columns.length + 1}`, dataIndex: `column${columns.length + 1}`, key: `column${columns.length + 1}`, }; setColumns([...columns, newColumn]); }; return ( <> <button onClick={handleAddColumn}>Add Column</button> <Table dataSource={data} columns={columns} /> </> ); }; export default DynamicTable; ``` 在上面的代码中,我们使用useState钩子来定义表头的数据源,并渲染一个添加列的按钮。当点击添加列按钮时,会动态生成一个新的列,并将其添加到表头的数据源中。这样就可以动态生成表头了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值