列表搜索条件的组件动态渲染及查询重置

本文探讨了如何在React.js应用中实现列表搜索条件的动态组件渲染,详细介绍了创建搜索组件的过程,并讲解了如何设置重置功能,确保用户可以轻松清除搜索条件。
摘要由CSDN通过智能技术生成

搜索条件topBase:

[
    {
        "label": "影片名称",
        "key": "film",
        "type": "input",
        "placeholder": "请输入影片名称",
        "default_value": "无间道",
        "value_options": [],
        "required": true
    },
    {
        "label": "城市单选",
        "key": "city",
        "type": "select",
        "placeholder": "请选择城市",
        "default_value": "01",
        "value_options": [
            {
                "key": "01",
                "value": "北京"
            },
            {
                "key": "02",
                "value": "上海"
            }
        ],
        "required": false
    },
    {
        "label": "状态多选",
        "key": "print_state",
        "type": "select_multiple",
        "placeholder": "请选择取票状态",
        "default_value": "01|02",
        "value_options": [
            {
                "key": "01",
                "value": "已取票"
            },
            {
                "key": "02",
                "value": "未取票"
            },
            {
                "key": "03",
                "value": "取票中"
            },
        ],
        "required": false
    },
    {
        "label": "年月日",
        "key": "date_yymmdd",
        "type": "date_picker",
        "placeholder": "请输入开场时间",
        "default_value": "2015-06-06",
        "value_options": [],
        "required": false
    },
    {
        "label": "年月日时分",
        "key": "date_yymmddhhmm",
        "type": "date_picker_time",
        "placeholder": "请输入开场时间",
        "default_value": "2019-08-12 17:08",
        "value_options": [],
        "required": false
    },
    {
        "label": "范围年月日",
        "key": "range_yymmdd",
        "type": "range_picker",
        "placeholder": "请输入起止时间",
        "default_value": "2015-06-06|2019-07-20",
        "value_options": [],
        "required": false
    },
    {
        "label": "范围年月日时分",
        "key": "range_yymmddhhmm",
        "type": "range_picker_time",
        "placeholder": "请输入起止时间",
        "default_value": "2015-06-06 07:08|2019-07-20 17:08",
        "value_options": [],
        "required": false
    },
    {
        "label": "树单选",
        "key": "tree_city",
        "type": "tree_select",
        "placeholder": "请选择城市",
        "default_value": "shanghai",
        "value_options": [
            {
                "title": "华东",
                "value": "huadong",
                "key": "0-0",
                "selectable": false,
                "children": [
                    {
                        "title": "上海",
                        "value": "shanghai",
                        "key": "0-0-0",
                    },
                ],
            },
            {
                "title": "东北",
                "value": "dongbei",
                "key": "0-1",
                "selectable": false,
                "children": [
                    {
                        "title": "辽宁",
                        "value": "liaoning",
                        "key": "0-1-0",
                        "selectable": false,
                        "children": [
                            {
                                "title": "沈阳",
                                "value": "shenyang",
                                "key": "0-1-0-0",
                            },
                            {
                                "title": "大连",
                                "value": "dalian",
                                "key": "0-1-0-1",
                            },
                        ],
                    },
                ],
            },
        ],
        "required": false
    },
    {
        "label": "树多选",
        "key": "tree_city_more",
        "type": "tree_select_multiple",
        "placeholder": "请选择多个城市",
        "default_value": "shanghai|dalian",
        "value_options": [
            {
                "title": "华东",
                "value": "huadong",
                "key": "0-0",
                "selectable": false,
                "children": [
                    {
                        "title": "上海",
                        "value": "shanghai",
                        "key": "0-0-0",
                    },
                ],
            },
            {
                "title": "东北",
                "value": "dongbei",
                "key": "0-1",
                "selectable": false,
                "children": [
                    {
                        "title": "辽宁",
                        "value": "liaoning",
                        "key": "0-1-0",
                        "selectable": false,
                        "children": [
                            {
                                "title": "沈阳",
                                "value": "shenyang",
                                "key": "0-1-0-0",
                            },
                            {
                                "title": "大连",
                                "value": "dalian",
                                "key": "0-1-0-1",
                            },
                        ],
                    },
                ],
            },
        ],
        "required": false
    },
]

搜索组件:

import React, {
    PureComponent } from 'react';
import moment from 'moment';
import {
    Form, Row, Col, Input, Button, Select, DatePicker, TreeSelect } from 'antd';
import styles from './index.less';

const FormItem = Form.Item;
const {
    Option } = Select;
const {
    RangePicker } = DatePicker;

const formatCondition = (type, value) => {
   
    if (!value) return "";
    switch (type) {
   
        case "select_multiple":
        case "tree_select_multiple":
            if (!value.length) return "";
            return value.join("|");
        case "date_picker":
            return moment(value).format("YYYY-MM-DD");
        case "date_picker_time":
            return moment(value).format("YYYY-MM-DD HH:mm");
        case "range_picker":
            if (!value.length) return "";
            return `${
     moment(value[0]).format("YYYY-MM-DD")}|${
     moment(value[1]).format("YYYY-MM-DD")}`;
        case "range_picker_time":
            if (!value.length) return "";
            return `${
     moment(value[0]).format("YYYY-MM-DD HH:mm")}|${
     moment(value[1]).format("YYYY-MM-DD HH:mm")}`;
        default:
            return value;
    
### 回答1: 对于您提出的问题,我会尽力回答。在vxe-grid中,重置按钮应该能够清空搜索条件。如果重置按钮无法清空搜索条件,可能是因为代码实现不当,需要对代码进行修改,确保重置按钮能够正确清空搜索条件。您可以检查代码并尝试进行调试,以解决此问题。 ### 回答2: vxe-grid是一款功能强大的表格组件,它提供了许多方便的功能和选项来满足开发者的需求。其中一个功能是重置按钮,这个按钮通常用于清空搜索条件,使得表格恢复到初始状态。 然而,在某些情况下,vxe-grid的重置按钮可能没有清空搜索条件,这可能是由于开发者在使用这个组件时没有正确配置或使用相关的属性和方法。 解决这个问题的方法之一是通过设置vxe-grid的`clears`属性来保证重置按钮的功能正常工作。这个属性可以指定需要清空的搜索条件和其他相关状态。例如,我们可以将搜索条件、排序状态、分页状态等都包含在这个属性中,以确保在点击重置按钮时,所有这些状态都会被正确清空。 另一个可能导致重置按钮不清空搜索条件的原因是在代码中缺少相应的逻辑。在点击重置按钮时,我们应该正确地调用vxe-grid的相关方法来重置搜索条件。例如,我们可以在重置按钮的点击事件中调用`clearAll()`方法来清空所有的搜索条件。 总之,解决vxe-grid中重置按钮不清空搜索条件问题需要开发者正确地配置组件的属性和使用相应的方法。通过设置`clears`属性和调用`clearAll()`方法,我们可以确保重置按钮能够正确清空搜索条件,使得表格恢复到初始状态。 ### 回答3: 在vxe-grid中重置按钮不清空搜索条件,可能是因为在组件的设计中,重置按钮的功能被定义为重置表格的状态,而不是清空搜索条件。 通常情况下,搜索条件会保存在组件的状态中,以便在用户重新渲染或刷新页面时保持搜索结果的一致性。因此,当用户点击重置按钮时,组件会将表格的状态恢复为默认值,但搜索条件不会被清空。 这样设计的目的是为了提供更好的用户体验。假设用户在表格中使用了多个筛选条件进行搜索,并且在某一次操作后希望返回之前的搜索结果,如果重置按钮清空了搜索条件,用户就需要重新输入或选择一遍搜索条件,这会给用户带来不便。 同时,vxe-grid通常还提供了清空搜索条件的功能,用户可以通过不同的方式清空搜索条件,例如点击清空按钮、手动删除搜索框中的文本、或是通过调用相关的方法清空搜索条件。 总而言之,vxe-grid中的重置按钮不清空搜索条件的设计是为了保持搜索结果的一致性和提供更好的用户体验。如果用户需要清空搜索条件,可以通过其他途径来完成。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值