Loading [MathJax]/jax/output/CommonHTML/config.js
社区首页 >问答首页 >如何创建多个嵌套列表?

如何创建多个嵌套列表?
EN

Stack Overflow用户
提问于 2020-07-09 07:34:40
回答 1查看 3.4K关注 0票数 3

因此,我试图创建一个列表,其中一个列表显示了许多项,其中两个项是可展开的,展开它们会显示更多的项(子项)。我已经成功地显示了列表,而子列表,但是,单击其中一个可扩展的项目,展开两个项目,而不仅仅是我单击的单一项目。

因此,首先,我将listItems分离为可以检索它们的数据结构。这是清单上的项目:

代码语言:javascript
代码运行次数:0
复制
// Skills list in the About Page
export const listItems = [
{
    listText: 'Html',
    listIcon: <SendIcon/>
},
{
    listText: 'CSS',
    listIcon: <DraftsIcon />
},
{
    listText: 'JavaScript',
    listIcon: <InboxIcon />
},
{
    listText: 'React',
    listIcon: <SendIcon/>,
    expan: true,
    // SubItems
    firstText:'React-Router',
    secondText:'React-Navigation',
    thirdText:'React-Native',
},
{
    listText: 'Database',
    listIcon: <DraftsIcon />,
    expan: true,
    // SubItems
    firstText:'FireBase',
    secondText:'SQL',
},
{
    listText: 'ReactJs',
    listIcon: <DraftsIcon />
},
{
    listText: 'ReactJs',
    listIcon: <DraftsIcon />
}]

这是我试图实现列表的代码:

代码语言:javascript
代码运行次数:0
复制
import React, { Fragment } from 'react'
import Styles from './Styles'

// ListItems
import List from '@material-ui/core/List';
import ListItem from '@material-ui/core/ListItem';
import ListItemIcon from '@material-ui/core/ListItemIcon';
import ListItemText from '@material-ui/core/ListItemText';
import ExpandLess from '@material-ui/icons/ExpandLess';
import ExpandMore from '@material-ui/icons/ExpandMore';
import StarBorder from '@material-ui/icons/StarBorder';
import Collapse from '@material-ui/core/Collapse';
import {listItems} from './ListItems'


const AboutSkills = () => {
const classes = Styles()

const [open, setOpen] = React.useState(false);
const handleClick = () => {
  setOpen(!open);
};

const outputList = () => (
    <>
        <List
            style={{color:'white'}}
            component="nav"
            className={classes.root}
        >
            { //Map through the ListItems and...
            listItems.map((item, index) => {
                // if expandable items exist, expand them
                if(item.expan) 
                { 
                    {/* Use fragment instad of <></> because key attribute is required */}
                    return <Fragment key={index}>
                                <ListItem button onClick={handleClick} className={classes.aboutList}>
                                    <ListItemIcon className={classes.aboutIcon}>
                                        {item.listIcon}
                                    </ListItemIcon>
                                    <ListItemText primary={item.listText} />
                                    {open ? <ExpandLess /> : <ExpandMore />}
                                </ListItem>
                                
                                <Collapse in={open} timeout="auto" unmountOnExit>
                                    
                                    <List component="div" disablePadding>
                                        <ListItem button className={classes.nested}>
                                            <ListItemIcon>
                                                <StarBorder />
                                            </ListItemIcon>
                                            <ListItemText classes={{primary:classes.expanText}}             
                                               primary={item.firstText} />
                                        </ListItem>
                                            {/* {console.log(item.secondText)} */}
                                        {   item.secondText //if seconditem exists...
                                            ? <ListItem button className={classes.nested}>
                                                    <ListItemIcon>
                                                    <StarBorder />
                                                    </ListItemIcon>
                                                    <ListItemText classes= 
                                            {{primary:classes.expanText}} primary={item.secondText} />
                                                </ListItem>
                                                : console.log('No Third Item')}

                                            {   item.thirdText //if seconditem exists...
                                            ? <ListItem button className={classes.nested}>
                                                    <ListItemIcon>
                                                    <StarBorder />
                                                    </ListItemIcon>
                                                    <ListItemText classes= 
                                             {{primary:classes.expanText}} primary={item.thirdText} />
                                                </ListItem>
                                                : console.log('No Third Item')} 

                                    </List>

                                </Collapse>
                            </Fragment>
                } else {
                    return <ListItem button className={classes.aboutList} key={index}>
                                <ListItemIcon className={classes.aboutIcon}>
                                    {item.listIcon}
                                </ListItemIcon>
                                <ListItemText classes={{primary:classes.unExpanText}} primary= 
                                 {item.listText} />
                            </ListItem>
                }    
            })}    
        </List>
    </>
)

return (
    outputList()
    )
}

export default AboutSkills
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-09 08:10:11

我在this线程中的this几乎就是您要搜索的内容。只要根据你的情况调整代码。

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

https://stackoverflow.com/questions/62818529

复制
相关文章
网页title图标_php 数据库显示在页面并能修改
重新定义TCPDF中的K_PATH_IMAGES常量(define(‘K_PATH_IMAGES’, xxxx) , 需要定义在加载tcpdf.php 之前)
全栈程序员站长
2022/10/03
4.2K0
网页实时显示时间_html页面布局代码
桌面新建记事本,将下列代码复制粘贴,重命名后缀为.html,保存,用浏览器打开即可
全栈程序员站长
2022/10/03
4K0
网页实时显示时间_html页面布局代码
在开启了CloudFlare的页面中显示当前节点信息
正如本站底部右下角所显示的那样当前CDN节点: San Jose, CA, United States - (SJC),是不是感觉有丶炫酷?请继续往下看
yumusb
2020/08/28
5.1K0
为什么html在浏览器中不能显示图片_做html网页图片显示不出来
我遇到的问题是写了一个HTML程序,结果在网页上面不能显示,原因是图片路径放置错了。
全栈程序员站长
2022/09/20
5.8K0
为什么html在浏览器中不能显示图片_做html网页图片显示不出来
weex eros APP 如何在vue页面显示图片,循环添加多张图片显示在vue页面上
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/acoolgiser/article/details/89016852
acoolgiser
2019/04/17
2K0
Python 实战(1):在网页上显示信息
上次简单介绍了 web.py。今天先来粗略解释下那个 hello world 页面的代码: import web 导入 web.py 模块。 urls = ( '/', 'index' ) 这是指定网站 url 的匹配规则,左边是正则表达式,右边是对应处理函数的名称。 class index: def GET(self): return "Hello, world!" 这便是处理请求的函数 index。GET 和 POST 是 HTTP 的两种请求方式,一般来说,GET 用于请求网
Crossin先生
2018/04/16
1.7K0
自定义wordpress每个分类显示多少页面数
一般的分页只需要在后台设置->阅读->博客中显示的页数,即可设置网站的分页,但是这么设置的分页是全站通用的,无论是首页、分类、搜索都显示一个分页数,但是若我们想单独控制某一个页面显示多少呢?下面我们就说说这种怎么实现。
PHP学习网
2022/08/03
7250
为抛弃刘海屏,苹果预备在显示屏上打孔,但这似乎已经落伍了
随着人脸识别解锁、支付等应用的兴起,相关技术及元器件也成为了移动智能手机的标配。从iPhone X发布至今,其后几乎每一款品牌都有支持人脸识别的新机发布,但也始终没能从根本上解决iPhone“刘海屏”的问题。当然,苹果也一直在尝试研究出更好的替代方案。
镁客网
2018/11/23
5630
在3D游戏中显示网页
在游戏中显示网页? 为什么要这么做呢? 其实可以做不少的应用: 嵌入帮助文档, 比如技能介绍, 可以做得很漂亮, 各种排版方式用传统UI做起来很费劲 活动公告页面直接在游戏中查看 游戏内的BBS/社区
逍遥剑客
2018/05/21
6440
直接iframe方式在网页上显示天气插件
天气预报调用网址(可定制):http://www.tianqi.com/plugin/
科控物联
2023/09/22
1.4K0
直接iframe方式在网页上显示天气插件
将jpeg图片显示在framebuffer上
点击(此处)折叠或打开 /************************************************** * example5.c * Author: T-bagwell * * Compile:gcc -Wall example5.c -o example5 *************************************************/ #include <stdio.h> #inclu
用户3765803
2019/03/05
1.2K0
浏览器中输入 URL 到网页显示的过程
图片来源:《图解HTTP》 总体来说分为以下几个过程: DNS 解析 TCP 连接 发送 HTTP 请求 服务器处理请求并返回 HTTP 报文 浏览器解析渲染页面 连接结束 具体可以参考下面这篇文章: 从输入 URL 到页面加载发生了什么? 常见 HTTP 状态码 状态码 各协议与 HTTP 协议之间的关系 图片来源:《图解HTTP》
happyJared
2019/06/24
1.4K0
在web浏览器上显示室内温度(nodeJs+arduino+socket.io)
上次的nodejs操作arduino入门篇中实现了如何连接arduino。这次我们来实现通过arduino测量室内温度并在浏览器上显示出来。 【所需材料】 硬件:LM35温度传感器,arduino u
用户1749219
2018/05/16
2.2K0
浏览器将URL变成一个屏幕上显示的网页的过程?
前言   一个浏览器是怎么工作的? 正文 URL变网页过程:   1.浏览器通过http或https协议,向服务端请求页面   2.将请求过来的HEML代码通过解析,构建DOM树   3.计算DOM
Dawnzhang
2019/03/08
7910
浏览器将URL变成一个屏幕上显示的网页的过程?
PC页面全屏显示以及退出全屏显示
//点击,进入全屏 $('#btn4').click(()=>{ let el = document.documentElement; let rfs = el.requestFullScreen || el.webkitRequestFullScreen || el.mozRequestFullScreen || el.msRequestFullScreen; if(typeof rfs != 'undefined' && rfs){ rfs.call
用户1174387
2021/10/26
5.3K0
如何下载网页上的视频?
You-get是GitHub上的一个项目,也可以说是一个命令行程序,帮助大家下载大多主流网站上的视频、图片及音频。支持的网站非常多,我们可以先来看一部分。
狼啸风云
2020/07/27
4.1K0
如何下载网页上的视频?
javascript 获取多种主流浏览器显示页面高度(转)
IE中: document.body.clientWidth ==> BODY对象宽度 document.body.clientHeight ==> BODY对象高度 document.documentElement.clientWidth ==> 可见区域宽度 document.documentElement.clientHeight ==> 可见区域高度 FireFox中: document.body.clientWidth ==> BODY对象宽度 document.body.clientHeight ==> BODY对象高度 document.documentElement.clientWidth ==> 可见区域宽度 document.documentElement.clientHeight ==> 可见区域高度 Opera中:  document.body.clientWidth ==> 可见区域宽度 document.body.clientHeight ==> 可见区域高度 document.documentElement.clientWidth ==> 页面对象宽度(即BODY对象宽度加上Margin宽) document.documentElement.clientHeight ==> 页面对象高度(即BODY对象高度加上Margin高) 没有定义W3C的标准,则 IE为: document.documentElement.clientWidth ==> 0 document.documentElement.clientHeight ==> 0 FireFox为: document.documentElement.clientWidth ==> 页面对象宽度(即BODY对象宽度加上Margin宽)document.documentElement.clientHeight ==> 页面对象高度(即BODY对象高度加上Margin高) Opera为: document.documentElement.clientWidth ==> 页面对象宽度(即BODY对象宽度加上Margin宽)document.documentElement.clientHeight ==> 页面对象高度(即BODY对象高度加上Margin高)
lin_zone
2018/08/15
9830
Confluence 如何在页面中显示目录
在默认情况下,Confluence 是不能在页面中显示目录和当前页面中的内容导航的。
HoneyMoose
2021/12/14
1.9K0
【JavaScript小项目】在网页上显示选择的图片
思路分析 选用<input type="file">原生组件,实现该组件美化。 选用<img src="file">实现图片预览。 代码实现 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>图片预览</title> <script src="js/test.js"> function upload(file) { cons
efonfighting
2020/02/13
1.2K0
如何在html页面显示html标签源码
这是一篇不正经实现方案报道。 1 引言 先来看个问答: stackoverflow: Why was the xmp HTML tag deprecated? [duplicate] 这个问题感觉
celineWong7
2020/11/05
11.5K0

相似问题

无法访问Azure容器服务

11

WebDriver容器无法访问DockerComposeContainer服务

15

服务结构容器-无法访问群集内的服务

13

使用Kubernetes的Azure容器服务-无法访问Internet的容器

216

Azure容器服务容器无法访问除80以外的其他端口

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档