当前位置: 首页 > 知识库问答 >
问题:

React无状态函数组件的TypeScript编译器错误

丁钟展
2023-03-14

我试图在TypeScript中编写一个React无状态函数组件。请参见以下代码

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:Type“({view,className,params,queryParams,store,refresh,style,children,title,router}:LinkPr…”不可分配给类型“无状态组件”。类型“void | Element”不可分配给类型“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"

提前感谢!

共有2个答案

茅炯
2023-03-14

只需删除LinkProps界面中的孩子。我认为你应该读一下这个

玩得开心。

金令
2023-03-14

如果不返回JSX元素,就会发生这种情况。此外,如果您返回一个返回JSX元素的函数,那么问题也会发生。为了避免这个问题,您可以返回

<React.Fragment>
    {yourFunction()}
</React.Fragment>

 类似资料:
  • 在React中,我编写了一个无状态功能组件,现在想向其添加Prop类型验证。 组件: 组件,渲染: 正如你在中看到的,我正在传递至。因为是一个字符串,我希望道具类型验证能够生效。相反,我在浏览器控制台中得到一个错误,因为字符串没有名为的方法。 为什么道具类型验证没有按预期工作?看看这个问题,情况似乎是一样的。

  • 所以我看到它找不到promise和地图。

  • 我正在尝试为现有的无状态 React 组件套件创建类型定义,这样我就可以自动生成文档并改进团队工具中的智能感知。 组件示例如下所示: 我的组件.js 我希望我的类型定义为: 定义哪些道具是允许的(哪些是必需的) 它将返回JSX 查看这个使用TypeScript创建React组件的示例,我发现了类型:< code>React。SFC。 我试着在我的定义中使用这个: 索引.d.ts 但是我收到 我对T

  • 在我的React JS项目中,我正在处理。我已经通过了使用进行私有路由和身份验证的示例。 https://reacttraining.com/react-router/web/example/auth-workflow 根据这个留档,他们创建了一个作为无状态组件。 但我的要求是将其转换为有状态的React组件,因为我想将我的组件连接到redux存储。 这是我的代码。 无状态组件 我将这个组件转换成

  • 问题内容: 我有正常路线 使用from 。 奇怪的是,这个组件很长一段时间都没有出现问题,但是现在当我用说的时候,它无法在travis- ci上编译 我在我的PrivateRoute组件中设置了此状态,这是带有重定向的非常标准的 如何更新要包含的对象的类型 编辑: 解决方案是添加 复制package.json之后,将其复制到我的Dockerfile中。 问题答案: 看起来您没有对软件包使用锁定文件

  • 每个人都说它使用组件将提高应用程序的性能。然而,我注意到,在错误的地方使用无状态组件确实会降低应用程序的性能。 无状态组件: