使用React Stateless Function组件的TypeScript编译器错误

问题描述 投票:2回答:2

我试图在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 ...'不能赋值给类型'StatelessComponent'。类型'void | Element'不能分配给'ReactElement'类型。类型'void'不能分配给'ReactElement'类型。

我究竟做错了什么?

以下是package.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"

提前致谢!

reactjs typescript mobx mobx-react
2个回答
0
投票

只需删除LinkProps界面中的子项。而且我认为你应该阅读this

玩得开心。


1
投票

如果您不返回JSX元素,则会发生这种情况。此外,如果您返回一个返回JSX元素的函数,也会发生问题。为了避免这个问题,您可以将<React.Fragment>作为空元素返回并将您的函数放入其中:

<React.Fragment>
    {yourFunction()}
</React.Fragment>
© www.soinside.com 2019 - 2024. All rights reserved.