antd-design组件库input和select组件如何优雅的给状态赋值

antd-design组件库input和select组件如何优雅的给状态赋值

react项目使用antd-design组件库,Input及select组件优雅赋值

前言

react项目使用antd-design组件库,Input及select组件优雅赋值。
对于冗余的代码,我们要有一个匠人的精神~~~

一、引入组件

import { message, Icon, Input, Select, Button, Checkbox, Table, Tag, Divider, Pagination } from 'antd';
import { talentTable } from '../../api'
import './index.less'
const { Option } = Select;

二、使用组件

<div className="framework-body-main cf credittalent-body">
                    <div className="key-input input-base">
                        <p className="input-title">关键词</p>
                        <Input placeholder="" onChange={(e)=> {this.inputChange(e,'keyWord')}} />
                    </div>
                    <div className="position-input input-base">
                        <p className="input-title">职位</p>
                        <Input placeholder="" onChange={(e)=> {this.inputChange(e,'position')}} />
                    </div>
                    <div className="company-input input-base">
                        <p className="input-title">公司名称</p>
                        <Input placeholder="" onChange={(e)=> {this.inputChange(e,'companyName')}} />
                    </div>
                    <div className="school-input input-base">
                        <p className="input-title">学校名称</p>
                        <Input placeholder="" onChange={(e)=> {this.inputChange(e,'schoolName')}} />
                    </div>
                    <div className="education-input input-base">
                        <p className="input-title">学历</p>
                        <Select placeholder="请选择" style={{ width: 200 }} onChange={(value)=> {this.inputChange(value,'education')}}>
                            <Option value="博士">博士</Option>
                            <Option value="硕士">硕士</Option>
                            <Option value="本科">本科</Option>
                            <Option value="专科">专科</Option>
                            <Option value="其他">其他</Option>
                        </Select>
                    </div>
                    <div className="job-input input-base">
                        <p className="input-title">工作年限</p>
                        <div className="select-container">
                            <Select placeholder="请选择" style={{ width: 120 }} onChange={(value)=> {this.inputChange(value,'workingStart')}}>
                                <Option value= {0}>不限</Option>
                                <Option value= {0}>无经验</Option>
                                <Option value= {1}>1</Option>
                                <Option value= {2}>2</Option>
                                <Option value= {3}>3</Option>
                                <Option value= {4}>4</Option>
                                <Option value= {5}>5</Option>
                                <Option value= {6}>6</Option>
                                <Option value= {7}>7</Option>
                                <Option value= {8}>8</Option>
                                <Option value= {9}>9</Option>
                                <Option value= {10}>10年及以上</Option>
                            </Select>
                            <div className="select-line">-</div>
                            <Select placeholder="请选择" style={{ width: 120 }} onChange={(value)=> {this.inputChange(value,'workingEnd')}}>
                                <Option value= {100}>不限</Option>
                                <Option value= {0}>无经验</Option>
                                <Option value= {1}>1</Option>
                                <Option value= {2}>2</Option>
                                <Option value= {3}>3</Option>
                                <Option value= {4}>4</Option>
                                <Option value= {5}>5</Option>
                                <Option value= {6}>6</Option>
                                <Option value= {7}>7</Option>
                                <Option value= {8}>8</Option>
                                <Option value= {9}>9</Option>
                                <Option value= {10}>10年及以上</Option>
                            </Select>
                        </div>
                    </div>

                    <div className="btn-position">
                        <Button type="primary"  onClick={(e) => { this.queryTalent(e) }}>查 询</Button>
                    </div>
                </div>

三、状态值设置

constructor(props) {
        super(props)
        this.state = {
            keyWord:'',
            position:'',
            companyName:'',
            schoolName:'',
            education:'',
            workingStart:'',
            workingEnd:'', // 条件查询对象
        }
    }

四、事件监听(重点要来了)

一般处理

    inputChange(e,flag) {
        // if (flag == 'keywords') {
        //     this.setState({
        //         keywords:e.target.value
        //     })
        // }
        // if (flag == 'position') {
        //     this.setState({
        //         position:e.target.value
        //     })
        // }
        // if (flag == 'company') {
        //     this.setState({
        //         company:e.target.value
        //     })
        // }
        // if (flag == 'shool') {
        //     this.setState({
        //         shool:e.target.value
        //     })
        // }
        // if (flag == 'education') {
        //     this.setState({
        //         education:e
        //     })
        // }
        // if (flag == 'jobstart') {
        //     this.setState({
        //         jobstart:e
        //     })
        // }
        // if (flag == 'jobend') {
        //     this.setState({
        //         jobend:e
        //     })
        // }
    } 

***优化处理

    inputChange(e,flag) {
        if (flag !='education' && (flag !='workingStart') && flag !='workingEnd') {
            this.setState({
                [flag]:e.target.value
            })
        } else {
            this.setState({
                [flag]:e
            })
        }
    } 

总结

善于思考,复盘,总结,优化,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值