首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以在React中对此代码使用DRY概念吗?

我可以在React中对此代码使用DRY概念吗?
EN

Stack Overflow用户
提问于 2022-02-14 11:14:06
回答 2查看 177关注 0票数 0

代码语言:javascript
复制
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”芯片组件。所以我一遍又一遍地写同样的代码。所以,请解决这个任何人..。谢谢:)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-02-14 11:19:16

使用一个变体数组,然后映射:

代码语言:javascript
复制
  const chips = ["all","mountain","beach","island","desert","plain"]
    .map(variant => (
       <Chip
          key={variant}
          label="all"
          variant={ variant === chip ? "filled": "outlined" } 
          onClick={handleClick} />
    ))

然后,您可以在下面的JSX中使用{chips}

文档:https://reactjs.org/docs/lists-and-keys.html

票数 2
EN

Stack Overflow用户

发布于 2022-02-14 11:18:42

可以提取创建Chip的方法。

代码语言:javascript
复制
const createChip = (label) => <Chip label={label} variant={ label === chip ? "filled": "outlined" } onClick={handleClick} />

那就这么说吧

代码语言:javascript
复制
{createChip("all")}
{createChip("plain")}
...

或者创建一个数组

代码语言:javascript
复制
{["all", "plain"].map(createChip)}

但是要确保每个项目都有一个密钥。

代码语言:javascript
复制
<Chip key={label} ...
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71110950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档