我已经创建了边栏,其中包含用户可以隐藏或显示所需部分的设置.

以下是这些组件的外观:

<List>
 {section.elements.map((subsection) => (
   <ListItem key={subsection.name}>
     {settings ? (
       <Checkbox
         checked={subsection.show}
         onChange={() => {
           subsection.show = !subsection.show
           setSidebar((prev) => [...prev])
         }}
       />
     ) : null}
     {subsection.show || settings ? (
       <Link href={section.routePrefix + subsection.href} passHref>
         <Button
           sx={{
             color:
               router.pathname.includes(`${section.routePrefix + subsection.href}`)
                 ? 'secondary.main'
                 : 'primary.main',
             width: "100%",
             justifyContent: "start"
           }}
           startIcon={subsection.icon}
         >
           {subsection.name}
         </Button>
     </Link>
     ) : null}
   </ListItem>
 ))}
</List>

我对以subsection.show || settings开头的代码和平有问题.正如您所看到的,如果这个条件为false,我只是不向用户显示任何内容,但实际上,在前端它不起作用.编译后,看起来仍然有li个标记.

这是前端的样子.

enter image description here

所以,我的问题是,如何完全隐藏这个组件,甚至可能不编译.我试图以不同的方式设置"无显示"和"隐藏",但仍然不起作用.

推荐答案

我想这就是你应该做的:

<List>
      {section.elements.map((subsection) =>
        subsection.show || settings ? (
          <ListItem key={subsection.name}>
            {settings ? (
              <Checkbox
                checked={subsection.show}
                onChange={() => {
                  subsection.show = !subsection.show;
                  setSidebar((prev) => [...prev]);
                }}
              />
            ) : null}
            <Link href={section.routePrefix + subsection.href} passHref>
              <Button
                sx={{
                  color: router.pathname.includes(
                    `${section.routePrefix + subsection.href}`
                  )
                    ? "secondary.main"
                    : "primary.main",
                  width: "100%",
                  justifyContent: "start"
                }}
                startIcon={subsection.icon}
              >
                {subsection.name}
              </Button>
            </Link>
          </ListItem>
        ) : null
      )}
    </List>

Javascript相关问答推荐

将数据从strapi提取到next.js,但响应延迟API URL

react 路由加载程序行为

有条件的悲剧

我开始使用/url?q=使用Cheerio

我们如何从一个行动中分派行动

空的结果抓取网站与Fetch和Cheerio

将本机导航路由react 到导航栏中未列出的屏幕?

为什么我的导航条打开状态没有在窗口addeventlistener(Reaction Js)中更新?

制作钢琴模拟器,并且在控制台中不会执行或显示该脚本

如何通过将实例方法的名称传递给具有正确类型的参数的继承方法来调用实例方法?

如何在和IF语句中使用||和&;&;?

自动滚动功能在当前图像左侧显示上一张图像的一部分

React Refs不与高阶组件(HOC)中的动态生成组件一起工作

使用CEPRESS截取时,cy.Wait()在等待5000ms的第一个路由请求时超时

JavaScript将字符串数字转换为整数

在HTML5画布上下文中使用putImageData时,重载解析失败

递增/递减按钮React.js/Redux

有没有办法在R中创建一张具有多个色标的热图?

将字体样式应用于material -UI条形图图例

在D3.js中创建具有旋转手柄的可拖动、可调整大小的框?