我正在尝试在TypeScript中编写React Stateless Function组件。请参阅以下代码:
import * as React from 'react';
import {observer} from 'mobx-react';
export interface LinkProps {
view: any;
className: any;
params?: any;
queryParams?: any;
store?: any;
refresh: boolean;
style?: any;
children: any;
title?: any;
router: any;
}
const Link: React.SFC<LinkProps> = ( // <----- Error on this line
{
view,
className,
params = {},
queryParams = {},
store = {},
refresh = false,
style = {},
children,
title = children,
router = store.router
}) => {
...
}
export default observer(Link);
然而编译器在const Link
上给我一个错误:
src / components / Link.tsx(17,7):错误TS2322:输入'{{view,className,params,queryParams,store,refresh,style,children,title,router}:LinkPr ...'is不能分配给'StatelessComponent'类型。 输入'void |元素'不能分配给'ReactElement'类型。 类型'void'不能分配给'ReactElement'类型。
我做错了什么?
以下是我的pckage.json文件中的版本依赖项:
"@types/react": "^16.0.29",
"@types/react-dom": "^16.0.3",
"del-cli": "^1.1.0",
"mobx": "^3.4.1",
"mobx-react": "^4.3.5",
"react": "^16.2.0",
"typescript": "^2.6.2"
提前致谢!
答案 0 :(得分:1)
如果不返回JSX元素,则会发生这种情况。另外,如果返回的函数返回JSX元素,则也会发生此问题。为避免发生此问题,您可以将<React.Fragment>
作为一个空元素返回并将函数放在其中:
<React.Fragment>
{yourFunction()}
</React.Fragment>
答案 1 :(得分:0)
只需删除LinkProps接口中的子级即可。而且我认为您应该阅读this
玩得开心。