莫 问 前 程 2024-09-03 22:19 采纳率: 25%
浏览 2

MUI组件库类型问题

自己定义的StyledAccordionSummary组件里一直会报类型错误,有没有遇到过的好兄弟哇,求解

img

类型“{ children: Element; }”与类型“IntrinsicAttributes & MUIStyledCommonProps”不具有相同的属性。 ts(2559)


import Accordion from '@mui/material/Accordion'
import ArrowForwardIosSharpIcon from '@mui/icons-material/ArrowForwardIosSharp'
import { AccordionSummary } from '@mui/material'
import AccordionDetails from '@mui/material/AccordionDetails'
import Typography from '@mui/material/Typography'
import { styled } from '@mui/material'

const StyledAccordionSummary = styled((props) => {
  return (
    <AccordionSummary
      expandIcon={<ArrowForwardIosSharpIcon sx={{ fontSize: '0.9rem' }} />}
      {...props}
    />
  )
})(({ theme }) => ({
  backgroundColor: 'rgba(0, 0, 0, .03)',
  flexDirection: 'row-reverse',
  '& .MuiAccordionSummary-expandIconWrapper.Mui-expanded': {
    transform: 'rotate(90deg)',
  },
  '& .MuiAccordionSummary-content': {
    marginLeft: theme.spacing(1),
  },
  ...theme.applyStyles('dark', {
    backgroundColor: 'rgba(255, 255, 255, .05)',
  }),
}))

const MyComponent = () => {
  return (
    <Accordion disableGutters elevation={0} square>
      <StyledAccordionSummary>
        <Typography>Accordion 1</Typography>
      </StyledAccordionSummary>
      <AccordionDetails>
        <Typography>
          Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do
          eiusmod tempor incididunt ut labore et dolore magna aliqua.
        </Typography>
      </AccordionDetails>
    </Accordion>
  )
}
export default MyComponent
  • 写回答

1条回答 默认 最新

  • 吃不了席 2024-09-03 22:20
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    在您的 TypeScript 项目中,您尝试使用 styled 套件来自定义 StyledAccordionSummary 组件。然而,在尝试使用 TypeScript 类型时遇到了一个类型错误:children 属性与 IntrinsicAttributes & MUIStyledCommonProps 的属性列表不匹配。

    要解决此问题,您可以将 children 属性更改为其他类型的参数,如数组、对象或其他类型的变量。例如:

    import React from "react";
    import Accordion from "@mui/material/Accordion";
    import ArrowForwardIosSharpIcon from "@mui/icons-material/ArrowForwardIosSharp";
    import Typography from "@mui/material/Typography";
    
    // 假设这是您的 StyledAccordionSummary 组件
    const StyledAccordionSummary = styled((props) => {
      return (
        <AccordionSummary
          expandIcon={<ArrowForwardIosSharpIcon sx={{ fontSize: "0.9rem" }} />}
          {...props}
        />
      );
    })(({ theme }) => ({
      backgroundColor: "rgba(0, 0, 0, 0.03)",
      flexDirection: "row-reverse",
      "& .MuiAccordionSummary-expandIconWrapper.Mui-expanded": {
        transform: "rotate(90deg)",
      },
      "& .MuiAccordionSummary-content": {
        marginLeft: theme.spacing(1),
      },
      ...theme.applyStyles("dark", {
        backgroundColor: "rgba(255, 255, 255, 0.05)",
      }),
    }));
    
    // 您的 MyComponent 函数现在应该看起来像这样:
    function MyComponent() {
      const [expanded, setExpanded] = React.useState(false);
    
      // ...
    }
    
    // 这是您的 MainComponent 函数:
    function MainComponent() {
      return (
        <div>
          {/* 使用您的原始 MyComponent */}
          <MyComponent expanded={expanded} />
        </div>
      );
    }
    
    export default MainComponent;
    

    这里的关键点在于更新 styled 组件以接受一个名为 children 的参数,并将其设置为数组,以便能够接收任何类型的数据作为其组成部分。这有助于解决 IntrinsicAttributes & MUIStyledCommonProps 不兼容的问题。

    如果您希望进一步解释如何在 TypeScript 中处理不同类型的数据,或者想要了解有关如何使用 styled 套件自定义组件的更多信息,请告诉我!

    评论

报告相同问题?

问题事件

  • 创建了问题 9月3日

悬赏问题

  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见
  • ¥15 一共有五道问题关于整数幂的运算还有房间号码 还有网络密码的解答?(语言-python)
  • ¥20 sentry如何捕获上传Android ndk 崩溃
  • ¥15 在做logistic回归模型限制性立方条图时候,不能出完整图的困难
  • ¥15 G0系列单片机HAL库中景园gc9307液晶驱动芯片无法使用硬件SPI+DMA驱动,如何解决?