如何根据后端响应动态更改 material ui 图标?
How to dynamically change material ui icon depending on the backend response?
我有一个table,在这个table中,有一个名为status的列,在这个列中,后台返回了三个值,分别是“approve”、“Review” ”和“待定”。我的问题是,当状态为“批准”时,我希望将图标的形状更改为“VerifiedUserIcon”(从'@material-ui/icons/VerifiedUser'导入VerifiedUserIcon;)并且当状态审查更改图标的形状时到“VisibilityIcon”,就像这张图
我该如何解决我的问题?
<TableCell className="p-4 md:p-16 truncate" component="th" scope="row">
<Chip
style={{ fontSize: "1.2rem" }}
icon={<FaceIcon />}
label={n.status}
variant="outlined"
/>
</TableCell>;
const statusIcon = (status) => {
switch (status) {
case "verified":
return <VerifiedIcon />;
case "review":
return <ReviewIcon />;
default:
return <DefaultIcon />;
}
};
<TableCell className="p-4 md:p-16 truncate" component="th" scope="row">
<Chip style={{ fontSize: "1.2rem" }} icon={statusIcon(n.status)} label={n.status} variant="outlined" />
</TableCell>;
你也可以使用ternary operator
来指定图标,假设只有3个状态
<TableCell className="p-4 md:p-16 truncate" component="th" scope="row">
<Chip
style={{ fontSize: "1.2rem" }}
icon={
n.status === "approve" ? (
<VerifiedIcon />
) : n.status === "review" ? (
<ReviewIcon />
) : (
<PendingIcon />
)
}
label={n.status}
variant="outlined"
/>
</TableCell>;
您甚至可以尝试 Object literals
您的图标,方法是将状态与相关图标进行映射,如下所示。
const statusIcon = {
verified: <VerifiedIcon />,
review: <ReviewIcon />,
// other icons based on your status
};
然后在您的代码中,您可以使用 statusIcon
对象并根据 属性.
获取图标
<TableCell className="p-4 md:p-16 truncate" component="th" scope="row">
<Chip
style={{ fontSize: "1.2rem" }}
icon={statusIcon[n.status]}
label={n.status}
variant="outlined"
/>
</TableCell>
我有一个table,在这个table中,有一个名为status的列,在这个列中,后台返回了三个值,分别是“approve”、“Review” ”和“待定”。我的问题是,当状态为“批准”时,我希望将图标的形状更改为“VerifiedUserIcon”(从'@material-ui/icons/VerifiedUser'导入VerifiedUserIcon;)并且当状态审查更改图标的形状时到“VisibilityIcon”,就像这张图
我该如何解决我的问题?
<TableCell className="p-4 md:p-16 truncate" component="th" scope="row">
<Chip
style={{ fontSize: "1.2rem" }}
icon={<FaceIcon />}
label={n.status}
variant="outlined"
/>
</TableCell>;
const statusIcon = (status) => {
switch (status) {
case "verified":
return <VerifiedIcon />;
case "review":
return <ReviewIcon />;
default:
return <DefaultIcon />;
}
};
<TableCell className="p-4 md:p-16 truncate" component="th" scope="row">
<Chip style={{ fontSize: "1.2rem" }} icon={statusIcon(n.status)} label={n.status} variant="outlined" />
</TableCell>;
你也可以使用ternary operator
来指定图标,假设只有3个状态
<TableCell className="p-4 md:p-16 truncate" component="th" scope="row">
<Chip
style={{ fontSize: "1.2rem" }}
icon={
n.status === "approve" ? (
<VerifiedIcon />
) : n.status === "review" ? (
<ReviewIcon />
) : (
<PendingIcon />
)
}
label={n.status}
variant="outlined"
/>
</TableCell>;
您甚至可以尝试 Object literals
您的图标,方法是将状态与相关图标进行映射,如下所示。
const statusIcon = {
verified: <VerifiedIcon />,
review: <ReviewIcon />,
// other icons based on your status
};
然后在您的代码中,您可以使用 statusIcon
对象并根据 属性.
<TableCell className="p-4 md:p-16 truncate" component="th" scope="row">
<Chip
style={{ fontSize: "1.2rem" }}
icon={statusIcon[n.status]}
label={n.status}
variant="outlined"
/>
</TableCell>