【发布时间】:2022-01-03 03:47:58
【问题描述】:
在App.tsx 中,如果您将鼠标悬停在<Accordion/> 中,您将看到以下错误。
'Accordion' cannot be used as a JSX component.
Its return type 'Element[]' is not a valid JSX element.
Type 'Element[]' is missing the following properties from type 'ReactElement<any, any>': type, props, keyts(2786)
我该如何解决这个问题?
App.tsx
import "./styles.css";
import Accordion from "./Accordion";
export default function App() {
const items = [
{ id: 1, title: "title 1", description: "description 1" },
{ id: 2, title: "title 2", description: "description 2" }
];
return (
<div className="App">
<Accordion items={items} />
</div>
);
}
手风琴.tsx
import React from "react";
import {
Accordion,
AccordionItem,
AccordionButton,
AccordionPanel,
AccordionIcon,
Box
} from "@chakra-ui/react";
type AccordionProps = {
items: Array<{ id: number; title: string; description: string }>;
};
export default function AccordionList({ items }: AccordionProps) {
return items.map((item) => {
return (
<Accordion defaultIndex={[0]} allowMultiple>
<AccordionItem>
<AccordionButton>
<Box flex="1" textAlign="left">
{item.title}
</Box>
<AccordionIcon />
</AccordionButton>
<AccordionPanel>{item.description}</AccordionPanel>
</AccordionItem>
</Accordion>
);
});
}
代码沙盒
https://codesandbox.io/s/determined-ives-lob9x?file=/src/Accordion.tsx:0-734
【问题讨论】:
标签: reactjs typescript