
import React from "react";
import { Chip, Box } from '@mui/material';
const Browse = () => {
const [chip, setChip] = React.useState("all")
const handleClick = (event)=>{
setChip(event.target.textContent);
console.log(chip)
}
return (
<Box mx={2} >
<Box mt={2} sx={{display:"flex", gridGap:"20px", flexWrap:"wrap"}} >
<Chip label="Price" sx={{color:"#FF005E"}} onClick={handleClick} />
<Chip label="Type of place" sx={{color:"#FF005E"}} onClick={handleClick} />
<Chip label="all" variant={ "all" === chip ? "filled": "outlined" } onClick={handleClick} />
<Chip label="mountain" variant={"mountain" === chip ? "filled": "outlined" } onClick={handleClick} />
<Chip label="beach" variant={ "beach" === chip ? "filled": "outlined" } onClick={handleClick} />
<Chip label="island" variant={ "island" === chip ? "filled": "outlined" } onClick={handleClick} />
<Chip label="desert" variant={ "desert" === chip ? "filled": "outlined" } onClick={handleClick} />
<Chip label="plain" variant={ "plain" === chip ? "filled": "outlined" } onClick={handleClick} />
</Box>
</Box>
);
};
export default Browse;帮我任何一个,我需要简单的干概念,我的代码。我想做一些小动画与“材料-ui”芯片组件。所以我一遍又一遍地写同样的代码。所以,请解决这个任何人..。谢谢:)
发布于 2022-02-14 11:19:16
使用一个变体数组,然后映射:
const chips = ["all","mountain","beach","island","desert","plain"]
.map(variant => (
<Chip
key={variant}
label="all"
variant={ variant === chip ? "filled": "outlined" }
onClick={handleClick} />
))然后,您可以在下面的JSX中使用{chips}。
发布于 2022-02-14 11:18:42
可以提取创建Chip的方法。
const createChip = (label) => <Chip label={label} variant={ label === chip ? "filled": "outlined" } onClick={handleClick} />那就这么说吧
{createChip("all")}
{createChip("plain")}
...或者创建一个数组
{["all", "plain"].map(createChip)}但是要确保每个项目都有一个密钥。
<Chip key={label} ...https://stackoverflow.com/questions/71110950
复制相似问题