Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在react中创建级联下拉列表

如何在react中创建级联下拉列表
EN

Stack Overflow用户
提问于 2018-06-23 19:28:43
回答 1查看 6.1K关注 0票数 1

如果可以使用office-ui-fabric-react,谁能告诉我如何创建三个级联下拉列表?

另一个问题是,当第一个下拉列表中的值发生更改时,如何重置第二个列表中的索引以将第一个项目显示为选中状态?

EN

回答 1

Stack Overflow用户

发布于 2019-01-08 09:52:33

正如在this post中所展示的,这是我实现动态选择下拉组件的一种可能方式。您可以递归地使用DropDown组件,方法是将组件本身作为另一个dropdown的子级传递;

代码语言:javascript
运行
AI代码解释
复制
const SomeComponent = () => 'SomeComponent';
const Foo = () => 'Foo';
const Bar = () => 'Bar';

class ListItem extends React.Component {
  handleClick = () => {
    const { option: {id}, onClick } = this.props;
    onClick(id);
  }
  
  render(){
    const { option: { label } } = this.props;
    return (
      <li onClick={this.handleClick}>{label}</li>
    )
  }
}

class DropDown extends React.Component {
  state = {
    selectedOption: null
  }
  
  handleOptionClick = optionId => {
    const { options } = this.props;
    this.setState({ selectedOption: options.find(option => option.id === optionId).child });
  }
  
  render(){
    const { selectedOption } = this.state;
    const { options } = this.props;
    return (
      <ul>
        {options.map(option => (
          <ListItem
            option={option}
            onClick={this.handleOptionClick}
          />
        ))}
        {selectedOption}
       </ul>
     )
  }
}

const DropDownOptions = [
  {id: '1', label: 'label-1', child: <SomeComponent />},
  {id: '2', label: 'label-2', child: <DropDown options={[
    {id: '2-1', label: 'label-2-1', child: <Foo />},
    {id: '2-2', label: 'label-2-2', child: <Bar />}
  ]} />}
]

ReactDOM.render(<DropDown options={DropDownOptions} />, document.getElementById('root'));
代码语言:javascript
运行
AI代码解释
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
<div id="root"></div>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51004421

复制
相关文章
[Excel技巧]创建下拉列表
在单位用Excel做统计,想偷个小懒,比如食品一栏。能不能设计一个下拉列表,直接在列表框中选择,省去键盘的重复输入呢?
卷福同学
2023/04/28
2.3K0
[Excel技巧]创建下拉列表
React篇(020)-如何在 React 中创建组件?
答案:有两种可行的方法来创建一个组件: 1. Function Components: 这是创建组件最简单的方式。这些是纯 JavaScript 函数,接受 props 对象作为第一个参数并返回 React 元素:
齐丶先丶森
2022/05/12
2.9K0
【自然框架】分享 n级联动下拉列表框
特点: 1、 使用js方法,把需要的数据一次性写入到页面里,然后用js来实现联动的效果。 2、 支持n级。 3、 封装成了服务器控件,所以使用非常简单。 4、 支持在回发的时候保持状态。 5、 支持修改记录的时候设置默认选项。 6、 页面设置比较灵活。 7、 采用DataSet作为数据的容器。 缺点: 1、 由于是把需要的数据一次性写入页面交给客户端,所以在网速比较慢的时候,显示页面需要比较长的时间。 可以改进的地方: 1、 引入json,可以把需要的数据放到单独的js文件里面,这样可以减少带宽的压力。 2
用户1174620
2018/02/08
2.8K0
【自然框架】分享 n级联动下拉列表框
原生js实现二级联动下拉列表菜单
if(data.code == 0) { //查询成功 var param = data.content; for(i = 0; i < param.length; i++) { deviceNotExist = true; var detTim = []; for(j in dev) { if(param[i].sbbh == dev[j].sbbh) { deviceNotExist = false; var period = { kssj: param[i].kssj, jssj: param[i].jssj } tim[j].push(period); break; } } if(deviceNotExist) { var deviceInfo = { sbbh: param[i].sbbh, sbmc: param[i].sbmc } dev.push(deviceInfo); var period = { kssj: param[i].kssj, jssj: param[i].jssj } detTim.push(period); tim.push(detTim); } } mulArr.push(dev); mulArr.push(tim); for(var i = 0; i < mulArr[0].length; i++) { $("#device").append("<option value=" + mulArr[0][i].sbbh + ">" + mulArr[0][i].sbmc + "</option>"); } for(var i = 0; i < mulArr[1][0].length; i++) { $("#period").append("<option value=startTime=" + mulArr[1][0][i].kssj + "&endTime=" + mulArr[1][0][i].jssj + ">" + mulArr[1][0][i].kssj + "-" + mulArr[1][0][i].jssj + "</option>"); }
寻找石头鱼
2019/09/11
12.3K0
原生js实现二级联动下拉列表菜单
Excel应用实践13:制作产品选型表,在用户窗体中实现级联下拉列表
在网站中,我们经常会碰到需要一层层向下选择的情况。在第一个选项列表中选择第一个数据,第二个选项列表中选择第二个数据,依此类推。并且,后面的选项列表内容会根据前面选择的内容而发生变化。如下图1所示。
fanjy
2019/07/19
3.2K0
级联下拉菜单效果
<!doctype html> <html> <head> <script src="jquery.js"></script> <script> $(function(){ $(".menu li,.menu ul li").mouseenter( function(){ $(this).children("ul").stop(true,true).slideDown(100).animate({opacity:1},20); } ).mouseleave( function(){ $(
用户1730674
2018/05/02
4.8K0
级联下拉菜单效果
pyqt中QTableWidget里的下拉列表
有时候我们希望在QTableWidget的单元格中进行下拉列表的选择,就像excel里面这样。那么怎么设置呢?怎么实现读和写呢?特别是在pyqt中,在c++中,网上已经有很多例子了。
钱塘小甲子
2019/08/15
3.8K0
Java 下拉列表
import java.awt.Container; import java.awt.FlowLayout; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.ComboBoxModel; import javax.swing.DefaultComboBoxModel; import javax.swing.JButton; im
用户2965768
2019/03/04
3.1K0
Selenium处理下拉列表
在执行Selenium自动浏览器测试时,很多时候需要处理下拉菜单。下拉菜单通常用于表单中,在节省空间和防止用户在表单中选择错误的选项时非常有用。因此在测试任何网站或访问表单时,如何使用Selenium处理下拉列表显得尤为重要。
FunTester
2020/07/22
6.2K0
c# (nop中)下拉列表(有外键)
1.在操作的界面Model中建立public List<SelectListItem> xxx(取名){ get; set; }
wfaceboss
2019/04/08
9730
asp.net mvc 下拉框级联
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/162926.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/15
8700
省份和城市的级联下拉菜单
一、效果图 二、代码 1、index.html <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta name="viewport" content="width=device-width, initial-
week
2018/08/24
3.6K0
省份和城市的级联下拉菜单
Excel实战技巧68:创建级联列表框(使用ADO技巧)
在《Excel实战技巧67:在组合框中添加不重复值(使用ADO技巧)》中,我们使用记录集技巧给组合框添加了不重复值,并概要讲述了ADO记录集基础知识。本文利用记录集技巧,创建级联列表框。
fanjy
2019/12/24
1.3K0
HTML 下拉列表框<select>
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/03
4.8K0
级联下拉菜单的实现「建议收藏」
相信我们都会选择第一种方法,这样不仅增强了代码的复用性,而且当我们的需求变动,需要显示新的数据时,只要更新数据库就可以了。而第二种方法只能适用于某种情况,需求改变,就需要在代码中进行大量的修改。
全栈程序员站长
2022/08/09
1.2K0
列表:创建列表
列表是Tcl语言中最重要的一种数据结构。什么是列表?列表是元素的有序集合,各个元素可以包含任何字符串,例如空格,反斜杠,换行符等。列表表现为特定结构的字符串,这意味着可以把它们赋值给一个变量,可以把它们做为参数传给命令,可以把它们嵌套到其他列表中。
Lauren的FPGA
2019/10/30
2.4K0
使用NPOI生成Excel级联列表
很久没发博客了,因为实在是太忙了(请允许我找个借口)。最近沉淀了很多内容,当然很多都差不多忘记了,不过我还是会在有时间的前提下逐步一一道来吧。最近做了一个批量下单的模板导出,因为订单中有商品大类和小类的概念,而且类型非常多,为了方便用户选择以及确保数据的合法性,因此级联选择势在必行。不过,在此之前,本人就算是在Excel中操作都不会设置下拉,跟别说级联下拉了,并且关于使用代码生成级联下拉这块,网上并没有相关的可以值得借鉴的内容,但是无论如何,Excel小白还是要挑战挑战的。折腾了一下午,总算搞定,而且顺便学会了Excel中的序列和级联。还是挺有成就感的。鉴于网上这块有价值的内容不多,于是在此分享此内容以及相关核心代码。
雪雁-心莱科技
2018/12/27
1.3K0
如何在 React 中引入 less?
本文主要写如何在 React 中引入 less 。因为 less 和 css 非常像,因此很容易学习。而且 less 仅对 css 语言增加了少许方便的扩展,这就是 less 如此易学的原因之一。
子舒
2022/06/09
3.9K0
自定义下拉列表
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style> body{ margin: 20px; } ul,li{ margin: 0px; padding: 0px; list-style: none; } #test1{ width: 300px; height: 40px; border: solid 1px darkred; line-height: 40px
前朝楚水
2018/04/02
1.9K0
点击加载更多

相似问题

如何创建级联下拉列表

11

动态创建级联下拉列表

10

如何创建级联下拉列表?

12

如何创建级联下拉列表

14

如何在css中创建下拉列表,如.dropdown:focus .下拉内容

17
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文