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

TypeScript和React-儿童类型?

南宫俊逸
2023-03-14

我有一个非常简单的功能组件,如下所示:

import * as React from 'react';

export interface AuxProps  { 
    children: React.ReactNode
 }


const aux = (props: AuxProps) => props.children;

export default aux;

和另一个组成部分:

import * as React from "react";

export interface LayoutProps  { 
   children: React.ReactNode
}

const layout = (props: LayoutProps) => (
    <Aux>
        <div>Toolbar, SideDrawer, Backdrop</div>
        <main>
            {props.children}
        </main>
    <Aux/>
);

export default layout;

我不断发现以下错误:

[ts]JSX元素类型“ReactNode”不是JSX元素的构造函数。类型“undefined”不可分配给类型“ElementClass”。[2605]

如何正确地键入此内容?

共有3个答案

秦珂
2023-03-14

您可以使用ReactChildrenReactChildren

import React, { ReactChildren, ReactChild } from 'react';
 
interface AuxProps {
  children: ReactChild | ReactChildren;
}

const Aux = ({ children }: AuxProps) => (<div>{children}</div>);

export default Aux;

如果需要传递元素的平面阵列:

interface AuxProps {
  children: ReactChild | ReactChild[] | ReactChildren | ReactChildren[];
}
怀宇
2023-03-14

为了使用

然而,它目前被定义为一个返回React.ReactNode的函数,这是一种更广泛的类型。正如打字员所说:

type ReactNode = ReactChild | ReactFragment | ReactPortal | boolean | null | undefined;

确保通过将返回值包装到React片段(

const aux: React.FC<AuxProps> = props =>
  <>{props.children}</>;

笪烨
2023-03-14

只需子项:React.ReactNode

 类似资料:
  • 我有一个非常简单的功能组件,如下所示: 还有一个组件: 我不断收到以下错误: [ts]JSX元素类型“ReactNode”不是JSX元素的构造函数。类型“未定义”不能分配给类型“元素类”。[2605] 如何正确键入?

  • 我对gitlab ci子管道有问题。需要在具有多个应用程序的repo中的每次提交后自动触发ci管道。需要配置以检测哪些文件夹/文件被修改,以便知道要触发哪个应用程序管道 结构示例 Main“.gitlab ci.yml”是: appA1".gitlab-ci.yml"是: appA2“.gitlab ci.yml”是: 这种配置的目的是,例如,当我在应用**中更改文件时,管道会检测到更改并生成应用

  • 我有三种模式:有许多有许多。当我删除一个用户时,我希望自动删除他所有相关的帖子以及与这些帖子相关的评论。为了实现这一点,我在和模型中有以下代码: 当我删除一个用户时,他的所有帖子都会被删除,但是评论会被保留。为什么会发生这种情况?

  • 昨天我在我的项目中添加了,现在当我离开并回到导航中的元素时,它会重新加载Sky,我得到 警告:儿童(…):遇到两个具有相同密钥的子项,。子密钥必须是唯一的;当两个子项共享密钥时,将只使用第一个子项。 (上面使用的数字50只是一个例子,它每次抛出这个错误~40次,都是不同的id) 这个问题似乎源于我的文件: 因为每次我进入另一个屏幕时,这个组件都会卸载,然后在我回来时重新安装。 当完成时,创建了一组

  • 本文向大家介绍儿童python练习实例,包括了儿童python练习实例的使用技巧和注意事项,需要的朋友参考一下 实例一: 题目:有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少? 程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列(只要百不等于十位并且不等于个位)。 实例(Python 2.0+) 实例二: 题目:企业发

  • 有人知道我为什么会有这种行为吗?是我的代码出了bug还是什么问题?