react实现动态选择框

本文实例为大家分享了react实现动态选择框的具体代码,供大家参考,具体内容如下

小需求

在工作中,我们也会碰到这种需求: 为了提高用户的体验,在搜索的时候,采用灵活查询。用户可以自己选择查询项并且填写对应的值。

这篇博文涉及知识点在这篇博文“react+antd 动态编辑表格数据”中提及过。大家可以先去这篇学习一下然后这里。

示例代码

import React, { Component, useState } from 'react';
import { Button, Col, message, Select, Row, Input } from 'antd'
import { PlusCircleOutlined, MinusCircleOutlined } from '@ant-design/icons';
const { Option } = Select
function Index() {


    // 可选项
    const [choseList, setChoseList] = useState(['商品ID', '款号', '产品线','一级类目','二级类目','三级类目','渠道'])

    // 已存在选
    const [exitChoseList, setExitChostList] = useState([])

    /**
     *  searchData的数据结构是:
     *      {
     *          // 选择项
                'sort': '',
                // 用户选择的值,即在多选框中选择的值
                'value': [],
                // 可选择项
                'chose_list': [],
                // 用户选择一个选择项之后,这个选择项对应的所有的选择。例如: 选择项为“季节”则春夏秋冬
                'value_chose_list':[]
            }
     */

    const [searchData, setSearchData] = useState([])


    return (
        
                            {                     searchData.map((item, index) => {                         return                                                         {                                 searchData[index]['sort'] == '商品ID' || '款号' ? {                                     let obj = [...searchData]                                     obj[index]['value'] = e.target.value                                     setSearchData(obj)                                 }} />                                     :                             }                             {                                 if(searchData[index]['sort'] != ''){                                     let value = searchData[index]['sort']                                     let exitChoseObj = [...exitChoseList]                                     setExitChostList([])                                     exitChoseObj.pop(value)                                     setExitChostList(exitChoseObj)                                     let obj = [...searchData]                                     obj.splice(index, 1);                                     setSearchData(obj)                                 }                             }} />                                             })                 }                 {                     let obj = [...searchData]                     setSearchData([])                     let arr3 = choseList.filter(items => exitChoseList.indexOf(items) == -1);                     obj.push({                         'sort': '',                         'value': [],                         'chose_list': arr3,                         'value_chose_list':[]                     })                     setSearchData(obj);                 }} />                        
                                           
       
    ) } export default Index

总结

这里就是采用了react中的: […searchData] 这个特性,造的第一个组件。后续还会继续分享自己的造的组件。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

你可能感兴趣的:(react实现动态选择框)