reactjs - 如何在 Typescript 中编写 React 无状态功能组件?
问题描述
我有这个:
import React, { useReducer } from 'react';
import { Item, List } from '../Types';
type Props = {
items: List;
};
const TodoList: React.SFC<Props> = ({ items, children }) => {
return items.map((item: Item) => <div key={item.id}>{item.id}</div>);
};
export default TodoList;
我不断得到:
类型 '({ items, children }: PropsWithChildren) => Element[]' 不可分配给类型 'FunctionComponent'。类型“元素[]”缺少类型“ReactElement ReactElement 组件”中的以下属性)> | 空) | (new (props: any) => Component)>': type, props, key
解决方案
问题是您试图在 JSX 中返回一个元素数组。在 React 中,您只能返回一个父元素,然后需要包装其余元素。所以尝试改变
return items.map((item: Item) => <div key={item.id}>{item.id}</div>);
至
return (
<div>
{items.map((item: Item) => <div key={item.id}>{item.id}</div>)}
</div>
)
如果您不希望有额外的div
,您也可以用Fragment包装您的列表项。在这种情况下,你会这样做:
return (
<React.Fragment>
{items.map((item: Item) => <div key={item.id}>{item.id}</div>)}
</React.Fragment>
)
推荐阅读
- java - 在java中制作一个二维队列数组
- r - Google 表格拟合模型是检索 nls() 起始参数的有效位置吗?
- python - 可移动相机中的相机篡改
- python - 使用实时日志设置时避免默认打印 pytest 日志
- java - 查询结果为“错误:运算符不存在:字符变化 ~~ bytea”
- openshift - 私有 PaaS 与公共 PaaS 与自我管理私有 PaaS
- ios - 无法从 Cloud Firestore 查询快照中压缩文档数组
- android - 编译Firemonkey Android APP时出错
- javascript - CodeWars 中的权重
- nginx - 如何配置 nginx 代理?