- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在学习 Typescript-react,但我陷入了这个错误 Type '({ items }: PropsWithChildren<TodoProps>) => Element[]' is not assignable to type 'FunctionComponent<TodoProps>'
我对此迷失了方向。
完全错误:
Type '({ items }: PropsWithChildren<TodoProps>) => Element[]' is not assignable to type 'FunctionComponent<TodoProps>'.
Type 'Element[]' is missing the following properties from type 'ReactElement<any, string | ((props: any) => ReactElement<any, string | ... | (new (props: any) => Component<any, any, any>)> | null) | (new (props: any) => Component<any, any, any>)>': type, props, key
TodoList
时发生错误
TodoList.tsx
内的函数文件。
import React from "react";
interface Todo {
id: number;
content: string;
completed: boolean;
}
interface TodoProps {
items: Todo[];
}
// v------v here is error
const TodoList: React.FC<TodoProps> = ({ items }) => {
return items.map((item: Todo) => <div key={item.id}>{item.id}</div>);
};
export default TodoList;
最佳答案
是的,这个错误可能听起来有点令人困惑——本质上它是说你只能返回一个 ReactElement
或其等效项 JSX.Element
在功能组件定义中,由 React.FC
强制执行类型。
React Fragments solve这个限制,所以你可以写 TodoList
in the following manner :
interface TodoProps {
items: Todo[];
}
const TodoList: React.FC<TodoProps> = ({ items }) => (
<React.Fragment>
{items.map((item: Todo) => (
<div key={item.id}>{item.id}</div>
))}
</React.Fragment>
);
简写:
const TodoList: React.FC<TodoProps> = ({ items }) => (
<>
{items.map(({ id }) => <div key={id}>{id}</div>)}
</>
);
顺便说一句:纯JS,类和函数组件都可以返回
multiple elements in an array作为渲染输出。目前,TS 有一个
type incompatibility对于函数组件中返回的数组,因此 Fragments 在这里提供了一个可行的解决方法(除了
type assertions )。
关于reactjs - 类型 '({ items }: PropsWithChildren<TodoProps>) => Element[]' 不可分配给类型 'FunctionComponent<TodoProps>',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58898227/
在我看来像是两个相似的设置,在一台机器上我被允许调用 MyApp 有类签名的地方 export interface IMyAppProps { accountId: string; disp
我有一个除了 children 之外没有任何 Prop 的组件, IE。: function Foo({ children }: React.PropsWithChildren<>) {} React
我一直在努力解决 typescript 错误。我们逐渐将文件更改为 typescript 。作为 typescript 的初学者,我很难搜索错误。我只想先了解错误,然后再谷歌搜索解决方案。 TS233
我在尝试分派(dispatch)操作时收到此错误: Property 'fetch_feed_loc' does not exist on type 'PropsWithChildren'. Prop
我正在学习 Typescript-react,但我陷入了这个错误 Type '({ items }: PropsWithChildren) => Element[]' is not assignabl
我是一名优秀的程序员,十分优秀!