首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

React选择dropdown onChange filter并重置为上一个/原始状态?

React是一种流行的前端开发框架,它提供了丰富的工具和组件来简化开发过程。在React中,dropdown组件常用于选择和过滤数据。当用户选择一个选项时,我们可以使用onChange事件处理函数来执行过滤操作并更新组件的状态。

要实现选择dropdown onChange filter并重置为上一个/原始状态,我们可以采取以下步骤:

  1. 首先,创建一个React组件,并在state中定义一个变量来保存dropdown选择的值和过滤后的结果。
代码语言:txt
复制
import React, { useState } from 'react';

const DropdownFilter = () => {
  const [selectedValue, setSelectedValue] = useState('');
  const [filteredData, setFilteredData] = useState([]);

  // 其他组件代码...

  return (
    <div>
      {/* dropdown选择器 */}
      <select value={selectedValue} onChange={handleDropdownChange}>
        <option value="">请选择</option>
        <option value="option1">选项1</option>
        <option value="option2">选项2</option>
        <option value="option3">选项3</option>
      </select>

      {/* 显示过滤后的数据 */}
      <ul>
        {filteredData.map(item => (
          <li key={item.id}>{item.name}</li>
        ))}
      </ul>

      {/* 其他组件代码... */}
    </div>
  );
};

export default DropdownFilter;
  1. 在handleDropdownChange事件处理函数中,根据选择的值执行过滤操作,并更新组件的状态。
代码语言:txt
复制
const handleDropdownChange = event => {
  const selectedOption = event.target.value;

  // 根据选择的值过滤数据并更新状态
  const filtered = data.filter(item => item.category === selectedOption);

  setSelectedValue(selectedOption);
  setFilteredData(filtered);
};
  1. 为了实现重置为上一个/原始状态,我们可以在state中定义一个变量来保存上一个选择的值,然后在需要重置的时候将其设为当前选择的值。
代码语言:txt
复制
const [selectedValue, setSelectedValue] = useState('');
const [filteredData, setFilteredData] = useState([]);
const [previousValue, setPreviousValue] = useState('');

const handleDropdownChange = event => {
  const selectedOption = event.target.value;

  if (selectedOption === previousValue) {
    // 重置为原始状态
    setSelectedValue('');
    setFilteredData([]);
    setPreviousValue('');
  } else {
    // 过滤数据并更新状态
    const filtered = data.filter(item => item.category === selectedOption);
  
    setSelectedValue(selectedOption);
    setFilteredData(filtered);
    setPreviousValue(selectedOption);
  }
};

这样,当用户选择与上一个选择相同的选项时,dropdown的值和过滤结果将被重置为原始状态。

在云计算领域中,腾讯云提供了一系列相关产品和服务来支持开发和部署React应用程序。您可以访问腾讯云官方网站(https://cloud.tencent.com/)了解更多详情。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

从componentWillReceiveProps说起

所以,之前可以利用引发EmailInput组件rerender把输入内容重置props.email,现在就不灵了 那么,需要想办法从外部把输入内容重置回props.email,有很多种方式: EmailInput...提供resetValue()方法,外部通过ref调用 外部改变EmailInput的key,强制重新创建一个EmailInput,从而达到重置回初始状态的目的 嫌key杀伤力太大(删除重建,以及组件初始化成本...),或者不方便(key已经有别的作用了)的话,添个props.myKey结合componentWillReceiveProps实现局部状态重置 其中,第一种方法只适用于class形式的组件,后两种则没有这个限制...,可根据具体场景灵活选择。...组件来处理(受React组件控制),而不受控组件的表单数据交由DOM机制来处理(不受React组件控制) 受控组件维护一份自己的状态根据用户输入更新这份状态: An input form element

2.4K20

React】417- React中componentWillReceiveProps的替代升级方案

react16.3之前,componentWillReceiveProps是在不进行额外render的前提下,响应props中的改变更新state的唯一方式。...从id2的账户切换到id3的账户,因为传入的email不同,进行了输入框的重置。大家可能想到,既然需要切换账户就重置,那就把id或者selectedIndex选中项作为判断重置条件。...这里我们可以将输入框设计一个完全可控组件,将更改的状态存在父组件中。...虽然解决了内部更新问题,但是并不能解决componentWillReceiveProps中提到的多个账户切换无法重置等问题。并且这样写的派生状态代码冗余,使组件难以维护。...3.通过唯一属性值重置非受控组件。 因为使用key值我们会重置子组件所有状态,当我们需要仅重置某些字段时或者子组件初始化代价很大时,可以通过判断唯一属性是否更改来保证重置组件内部状态的灵活性。

2.9K10
  • 如何使用 React 构建自定义日期选择器(3)

    本文作者:IMWeb howenhuo 原文出处:IMWeb社区 未经同意,禁止转载 接着上一篇:如何使用 React 构建自定义日期选择器(2) Datepicker 组件 构建 Datepicker...handleDateChange() 方法以 Date 对象作为参数,更新 state 下的 date。...渲染 datepicker 此时,值得一提的是,Bootstrap Dropdown 组件将用于模拟自定义日期选择器的下拉效果。这就是为什么 Reactstrap 包被添加为此项目的依赖项的原因。...date.split("-").join(" / ") : ""} onChange={this.handleChange} readOnly="readonly...结论 在本教程中(1、2、3),您已经能够逐步了解如何构建一个定制的 React 日期选择器组件,该组件可以作为原生 HTML5 日期选择器输入元素的替代。

    8K10

    TDesign 更新周报(2022 年 5 月第 1 周)

    animation属性exclude和include在TS中都必填的问题 Datepicker:修复weekday英文翻译的顺序问题 Others Table:TS 类型全部移入 interface.ts 文件中,导出...#icon 无效的问题 Menu:修复expandMutex无法动态更新 Input:修复onChange触发两次 Tabs:修复add方法点击报错 Textarea:修复autofocus参数更新无法聚焦...Select:修复在结合option使用下的render告警 Slider:将marks属性更改为响应性属性,内部修复marks刻度节点点击事件无效问题 Dropdown:修复下拉菜单点击后报错 Menu...Transfer:修复选择无效和搜索无效 DataPicker:data-picker增加apply事件 Input:修复input组件clearable问题 TreeSelect:修复右侧箭头状态与清除回掉...问题 修复loading状态文案问题 Datepicker:修复空数组确定事件报错问题 Dialog:修复组件销毁后body样式不重置问题&移除多余div渲染 Textarea:修复在Form组件下换行问题

    5.3K50

    TDesign 更新周报(2022年8月第1周)

    选择行导致拖动后的距离被重置Datepicker: 修复单独配置 clearable 失效问题TreeSelect: 修复输入项过长时,操作区域图标被遮挡的问题Cascader: 修复在异步获取 option...替换遗漏的 classprefixTabs: 修复组合场景下的示例详情见:https://github.com/Tencent/tdesign-vue-next/releases/tag/0.19.0React...Features支持全局替换 tdesign 内置 IconDatePicker: 支持季度选择器Rate: 新增 rate组件Select: 展开面板后二次点击输入框调整关闭面板Grid: col...Dropdown: 修复 className 继承问题Tree: 修复更改 data 数据后展开状态丢失问题详情见:https://github.com/Tencent/tdesign-react/releases...releases/tag/0.18.0Vue3 for Mobile 发布 0.10.1 Bug Fixessearch: 修复失去焦点后输入内容被隐藏和清除按钮无法使用的问题Tabs: 修复传入相同的值时仍触发 onChange

    3.5K10

    TDesign 更新周报(2022年8月第2周)

    Vue2 for Web 发布 0.45.2 FeaturesPagination: 极简模式下合并快速跳转与页码跳转控制器DatePicker: 支持周、季度选择器Table:新增 cellEmptyContent...修复深色模式下垂直和水平方向滚动条交汇处出现白点的样式问题可编辑行功能,提交校验时只校验了第一列列配置功能,带边框模式,移除分页组件边框下方多余的边框Dialog: 修复 confirm-btn 类型问题Dropdown...ColorPicker: 面板 ui 优化 Bug FixesTable:多级表头场景下,修复表尾信息不对齐问题树形结构,修复某些场景下无法完全重置数据的问题树形结构,修复懒加载节点重置时(即调用 setData...展开全部功能,不应该展开懒加载节点修复吸顶的多级表头,缺少左侧边线问题行内有多条规则时,只生效第一条规则DatePicker:修复年份范围和面板年份不一致问题修复面板初始化月份问题Jumper: 修复 onChange...报错问题Upload: 修复 onRemove 失效问题tooltip: disable状态及popuptrigger时不响应问题详情见:https://github.com/Tencent/tdesign-react

    1.7K10

    92.精读《React PowerPlug 源码》

    引言 React PowerPlug 是利用 render props 进行更好状态管理的工具库。 React 项目中,一般一个文件就是一个类,状态最细粒度就是文件的粒度。...然而文件粒度并非状态管理最合适的粒度,所以有了 Redux 之类的全局状态库。 同样,文件粒度也并非状态管理的最细粒度,更细的粒度或许更合适,因此有了 React PowerPlug。...Button onClick={reset}>Reset to initial )} 源码 源码地址 原料:无 State 只存储一个属性 value,赋初始值...Active 这是一个内置鼠标交互监听的容器,监听了 onMouseUp 与 onMouseDown,依此判断 active 状态。...与 Value 的唯一区别是,支持了 bind 封装 onChange 监听,与赋值受控属性 value。

    1.2K30

    记一个复杂组件(Filter)的从设计到开发

    由于代码编写使用基于底层 weex 的 rax 框架,所以有些坑,或许对于正在使用 react 或者 vue 的你并不会遇到,可以直接忽略 说说业务 Filter,已经常见的不可再常见的组件了,顾名思义...组件在和业务面板隔离,支持任意组件接入,业务组件里搜索变更通过 onChange(params)回调函数来触发 提供了三种业务通用的面板组件 `rax-pui-list-select`,列表选择业务面板...Filter组件展开面板状态下距离页面顶部的高度,有两种状态:固定位置和跟随页面滚动吸附置顶 固定位置 状态下距离页面顶部的高度 跟随页面滚动吸附置顶: 状态下距离页面顶部的高度效果图 undefined...displayMode Panel 展现形式:全屏、下拉参数说明 全屏:Fullscreen下拉:Dropdown String 'Dropdown' noAnimation 禁止动画 Boolean...flag:默认进来 opacity 设置 0,当动画初始状态设置完毕后,在将最外层容器的 opacity 设置 1,其实 Panel 还是闪了一下,只是你看不到而已。

    1.8K30

    TDesign 更新周报(2022年3月第3周)

    修复文字过长时不显示 tooltip 的问题 Datepicker: 修复 Form 中使用时,触发校验时机错误的问题 InputNumber: 修复小数计算错误的问题 Popup: trigger ...hover 时点击引用元素保持开启状态,防止菜单消失 TagInput :修复相关样式问题 TreeSelect: 修复异步加载数据的情况下,label 展示错误的问题 Timepicker: close...align、tips 的支持,统一 InputNumber 中的 Input 使用 Input 组件减少重复实现 Notification: 优化完善回收时的动画效果 DatePicker:打开时间面板重置时间...Web 发布 0.28.0 版 Swiper: 交互、设计、API 全部重构,如有使用老的 Swiper 组件需重新接入,⚠️存在不兼容更新 Swiper: 重构 swiper 组件 Table: 支持 onChange...属性 详情见:https://github.com/Tencent/tdesign-miniprogram/releases/tag/0.7.0 Vue3 for Mobile 发布 0.8.0 版 dropdown-menu

    1.3K20

    TDesign 更新周报(2022年9月第1周)

    (#1407)官网:在线主题器支持全局圆角配置 @uyarn (#1459) Bug FixesSelect:修复 creatable 模式下的 filter 能力 @skytt (#1427)修复过滤掉数据后上下键仍可以选择过滤外的数据的问题... @sechi747 (#1434)Button: 区分 loading 和 disabled 状态,修复幽灵按钮 loading 状态背景色 @DevinXian (#1432)Popup: 修复overlayInnerClassName...#1544)修复空字符串页面崩溃问题 @HQ-Lin (#1590)Tabs: 修复 addable 添加按钮定位错误 @HelKyle (#1553)Select: 修复 creatable 模式下的 filter...tdesign-vue-next#1472 @chaishi (#1420)文本超出省略由 Popup 更为 Tooltip,方便定义提醒文本主题色,issue#1369 @chaishi (#1420)Dropdown...HelKyle (#1424)Table: 修复 debounce 问题 @HelKyle (#1424)Popup: 修复 debounce 问题 @HelKyle (#1424)Radio: 修复 onChange

    2.6K20

    续篇:展开聊下 state 与 渲染树中位置的关系

    本篇,✓ 展开聊下 state 与 渲染树中位置的关系 状态与渲染树中的位置相关 ✊ 相同位置的相同组件会使得 state 被保留下来 ✌️ 相同位置的不同组件会使 state 重置 只要一个组件还被渲染在...React 通过组件在 渲染树中的位置将它保存的每个状态与正确的组件关联起来。...⭐ 结论:通过上述的分析得知,一个组件被渲染在 UI 树的相同位置,React 就会保留它的 state。那么如何重置呢?...name="李刚">} ) } 初始化 status 的值是 true:第一个位置是 Counter ,第二个位置是 空 的; 切换 status 值...在相同位置渲染的是 不同 的组件,所以 React 将其下所有的 state 都重置了。 这样会导致 bug 以及性能问题。为了避免这个问题, 永远要将组件定义在最上层并且不要把它们的定义嵌套起来。

    8200

    TDesign 更新周报(2022年5月第3周)

    insertBefore 树形结构,支持在当后节点之后插入新节点 insertAfter Tree:label 支持多行文本展示 Bug Fixes Table:列拖动优化;修复选中行后列拖动距离被重置问题...undefined 的时候不会更新双向绑定值 Switch:修复 disabled 状态下仍然可以点击 TreeSelect:修复 placeholder 传入无效 详情见:https://github.com.../Tencent/tdesign-vue-next/releases/tag/0.15.0 React for Web 发布 0.34.0 ❗ Breaking Changes DatePicker:...onChange 回调第二个参数调整对象,支持更多类型返回值,存在不兼容更新 Form:不再默认渲染 help 空节点 Features Form:FormList 支持手动赋值 Form:支持...性能优化,减少隐藏元素,使用更流畅 Table:重构表格嵌套关系 Input:重构输入框嵌套关系 Menu:重构导航菜单嵌套关系 Dropdown:重构下拉菜单嵌套关系 2.

    2.8K30

    优化 React APP 的 10 种方法

    在文本框中输入2Click Me连续单击按钮,我们将看到ReactComponent将被重新渲染一次,并且永远不会被渲染。 它将上一个道具和状态对象的字段与下一个道具和状态对象的字段进行浅层比较。...重新选择库封装了Redux状态检查该状态的字段,告诉React什么时候渲染或不渲染字段。...因此,重新选择可通过浅遍遍遍prev和当前Redux状态字段来检查宝贵的时间,尽管它们具有不同的内存引用,但它们是否已更改。...现在,看到按下按钮时,该按钮会将状态设置0。如果连续按下按钮,则状态始终保持不变,但是尽管传递给其道具的状态相同,但My组件仍将重新渲染。...React.memo通过将其当前/下一个道具与上一个道具进行比较来记住一个组件,如果它们相同,则不会重新渲染该组件。

    33.9K20

    TDesign 更新周报(2022年10月第3周)

    组件库Vue2 for Web 发布 0.49.1 FeaturesSelect: onChange 事件增加 option 参数返回 issue#1664 @skytt (#1667)添加 options...cell 闪烁问题 @luwuer (#1587)Textarea: 修复禁用状态字数限制区域的样式问题 @uyarn (#1684)Space: 修复子节点空的报错 @uyarn (#1684)Dialog.../Tencent/tdesign-vue-next/releases/tag/0.24.3React for Web 发布 0.42.4 FeaturesTag: 样式优化,实现 light-outline...回调参数缺失问题 @uyarn (#1603)Swiper: 当轮播只有一个时,点击左侧按钮后,按钮失效问题 @yatessss (#1604)Dropdown: 修复子组件平铺渲染时渲染异常的问题...,性能大幅提升样式升级:优化颜色图层应用图层样式,优化色值描述文字;新增 500+ 字体样式全局应用,修复了大量 Dirty Style 文本;新建投影图层样式全局应用示例页:所有示例页全新升级,浏览组件更合理更便捷图层样式

    1.1K40

    TDesign 更新周报(2022年11月第2周)

    待创建选项显示样式问题优化键盘事件的逻辑ConfigProvider: 修复 t-config-provider 直接包裹 router-view 标签时控制台报错的问题 @LoopZhou (#1753)Tree: 修复 filter...过滤后,过滤结果空,未能显示 empty slot 的问题 @yaogengzhu (#1748)InputNumber: 修复theme=column时,autoWidth 无效问题,issue#1652...support guide component @Yilun-Sun (#1581) Bug FixesTable: 当禁用resizable时,基础表格表头默认使用用户定义的列宽 @ZTao-z (#1662)Dropdown...@HQ-Lin (#1675)InputNumber: 修复最小值0仍可点击减号至-1的问题 @lilonghe @uyarn (#1676)Input: 修复在输入框进行预渲染处于 display...)Form: 修复提交后 onChange 校验不清除状态问题 @HQ-Lin (#1664)TreeSelect: 修复 valueDisplay 和 filterable 同时设置时的显示问题 @moecasts

    1.5K20
    领券