[英]React AntDesign Menu Sub Item ... make it work like component
对于 AntD 菜单...我们使用<Menu>
、 <Menu.Item>
、 <SubMenu>
。
但我不想将这些用于导航,而是用于表示。 我想使用下拉菜单来显示 object 的属性。
例如。 苹果 -> 红色,水果; Cucumber -> 绿色,蔬菜; 将显示为一个菜单,其中 Apple 和 Cucumber 作为子菜单标题,每个下拉菜单分别为红色、水果和绿色、蔬菜。
但我不想预定义属性和子菜单标题。 如果它是一个组件(例如卡片),我可以让组件按照 object 进行渲染,这样如果有 10 个对象,就会渲染 10 个卡片(例如)。
是否可以对发送数据的<SubMenu>
和<Menu.Item>
执行相同操作,它首先查看键“名称”并呈现为子菜单标题并将属性单独呈现为子菜单中的菜单项?
有没有我可以使用的替代方案?
不确定我的问题是否很清楚......如果感到困惑,我很乐意澄清任何事情。
不确定这是否是您想要的
import React from "react";
import ReactDOM from "react-dom";
import "antd/dist/antd.css";
import "./index.css";
import { Menu } from "antd";
const { SubMenu } = Menu;
const data = [
{
Name: "Apple",
Colour: "red",
Type: "fruit"
},
{
Colour: "green",
Type: "vegetable",
Name: "Cucumber",
Season: "spring"
},
{
Name: "Book",
Title: "hello",
Author: "nick"
}
];
const Sider = () => {
const [openKeys, setOpenKeys] = React.useState(["sub1"]);
const onOpenChange = (keys) => {
const latestOpenKey = keys.find((key) => openKeys.indexOf(key) === -1);
if (data.indexOf(latestOpenKey) === -1) {
setOpenKeys(keys);
} else {
setOpenKeys(latestOpenKey ? [latestOpenKey] : []);
}
};
return (
<Menu mode="inline" onOpenChange={onOpenChange} style={{ width: 256 }}>
{data.map((each) => (
<SubMenu key={each.Name} title={each.Name}>
{Object.entries(each).map(
([key, value]) =>
key !== "Name" && (
<Menu.Item key={each.Name + "-" + key}>{value}</Menu.Item>
)
)}
</SubMenu>
))}
</Menu>
);
};
ReactDOM.render(<Sider />, document.getElementById("container"));
CodeSandbox演示
让我知道这是否适合您
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.