Javascript 如何在react中从.map()渲染组件

Javascript 如何在react中从.map()渲染组件,javascript,reactjs,material-ui,jsx,Javascript,Reactjs,Material Ui,Jsx,所以我尽量不重复代码,可能会使这件事过于复杂,但我很好奇这样的系统是否有办法工作 <Drawer anchor="right" open={sideBarOpen} onClose={toggleSideBar}> <List className={classes.sideBar}> {[ ["test1", <LockOpenIcon /

所以我尽量不重复代码,可能会使这件事过于复杂,但我很好奇这样的系统是否有办法工作

        <Drawer anchor="right" open={sideBarOpen} onClose={toggleSideBar}>
          <List className={classes.sideBar}>
            {[
              ["test1", <LockOpenIcon />],
              ["test2", <LockOpenIcon />],
              ["test2", <LockOpenIcon />],
            ].map(({ text, icon }, index) => (
              <Fragment key={index}>
                <ListItem button>
                  <ListItemIcon>{icon}</ListItemIcon>
                  <ListItemText primary={text} />
                </ListItem>
                <Divider />
              </Fragment>
            ))}
          </List>
        </Drawer

{[
[“测试1”,],
[“测试2”,],
[“测试2”,],
].map({text,icon},index)=>(
{icon}
))}

是的,这是可能的,而且你大部分都做对了。您刚刚使用了对象解构(
{text,icon}
),您应该在其中使用iterable解构(
[text,icon]
):


:facepalm:我希望这不是什么显而易见的东西哈哈,谢谢你的帮助和建议,我会把它放到自己的组件中。
<Drawer anchor="right" open={sideBarOpen} onClose={toggleSideBar}>
    <List className={classes.sideBar}>
        {[
            ["test1", <LockOpenIcon />],
            ["test2", <LockOpenIcon />],
            ["test2", <LockOpenIcon />],
        ].map(([ text, icon ], index) => (
            <Fragment key={index}>
                <ListItem button>
                    <ListItemIcon>{icon}</ListItemIcon>
                    <ListItemText primary={text} />
                </ListItem>
                <Divider />
            </Fragment>
        ))}
    </List>
</Drawer>
const MyListItem = React.memo(({text, icon}) => (
    <ListItem button>
        <ListItemIcon>{icon}</ListItemIcon>
        <ListItemText primary={text} />
    </ListItem>
));
<Drawer anchor="right" open={sideBarOpen} onClose={toggleSideBar}>
    <List className={classes.sideBar}>
        <MyListItem text="test1" icon={<LockopenIcon/>} />
        <Divider />
        <MyListItem text="test2" icon={<LockopenIcon/>} />
        <Divider />
        <MyListItem text="test3" icon={<LockopenIcon/>} />
    </List>
</Drawer>