在 Typescript 中检测 React 子数组长度

2024-02-21

我有一个可以接受 React 的组件children作为节点或节点数组。我希望能够检测到是否children是一个节点数组,但我收到以下 Typescript 错误:

TS2339:类型“string |”上不存在属性“length”数量 |真实 | {} | ReactElement ReactElement | null) | (new (props:any) => Component)> | ... 47 更多... | (ReactNode[] 和 ReactPortal)'。类型“number”上不存在属性“length”。

Typescript 有没有办法检测是否children有长度吗?谢谢。

import React from 'react';

interface Props {
  children: React.ReactNode | React.ReactNode[];
}

const SampleComponent: React.FC<Props> = ({ children }) => {
  if (children && children.length) {
    return children.map((child) => (
      <div>{child}</div>
    ));
  }

  return children;
};

export default SampleComponent;

有一个React.Children https://reactjs.org/docs/react-api.html#reactchildrenAPI 用于处理props.children(这是一个不透明的数据结构).

Also, React.Children有类似的方法count https://reactjs.org/docs/react-api.html#reactchildrencount, map https://reactjs.org/docs/react-api.html#reactchildrenmap etc.

if (React.Children.count(children)) {
  return React.Children.map(children, (child) => <div>{ ..todo.. }</div>)
}

它也有 TypeScript 支持。因此,您不需要强制转换类型。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Typescript 中检测 React 子数组长度 的相关文章

随机推荐

  • 等待 JUnit 测试用例中测试的代码生成的所有线程

    如何确保在 JUnit 测试用例中 由被测方法直接 间接生成的所有线程都已完成该作业 以便我可以断言最终结果 Test public void testMethod Result result method may spawn multip
  • EF Composite 关键流畅 API

    我正在尝试映射实体的复合键 public class Customer public int CustomerId get set public virtual List
  • write() 参数必须是 str,而不是字节 [重复]

    这个问题在这里已经有答案了 我是一名初学者程序员 正在阅读 Python 初学者 一书 我在尝试为问答游戏编写高分函数时遇到了一个问题 当调用函数 highscore user highscore 时 我尝试相应地分配参数 以便我可以将信息
  • 获取 keyvault 的访问令牌

    我在本地发布了一个 Web 应用程序并将其连接到 IIS 当我尝试导航到该网站时 它在启动时失败 并在尝试访问该网站时出现以下错误keyvault 应用程序启动异常 Microsoft Azure Services AppAuthentic
  • 如何通过 Bootstrap 选项卡使用 AJAX 加载?

    我使用了 bootstrap tabs js 并且它运行得很好 但我没有找到有关如何通过AJAX请求加载内容的信息 那么 如何通过 bootstrap tabs js 使用 AJAX 加载呢 在 Bootstrap 2 0 及更高版本中 您
  • 如何通过网络驱动器快速获取 .csv 文件的最后一行?

    我存储了数千个时间序列 csv网络驱动器上的文件 在更新文件之前 我首先获取文件的最后一行以查看时间戳 然后使用该时间戳之后的数据进行更新 如何快速获取最后一行 csv文件通过网络驱动器 这样我就不必加载整个巨大的 csv文件只使用最后一行
  • 什么是获得颜色以使图像上的文本突出的好算法?

    例如下图 背景是一张照片 照片中央有一个 伊涅斯塔 这个人物 但由于颜色不好 字符有些难以阅读 有没有什么好的算法可以获取颜色以使图像上的字符突出 您可以使用以下技巧 而不是制作矩形背景 确实看起来不太好 选择两种对比色 例如白色和黑色 使
  • 使用php获取两个日期之间的总时间差[重复]

    这个问题在这里已经有答案了 可能的重复 如何使用 PHP 计算两个日期之间的差异 https stackoverflow com questions 676824 how to calculate the difference betwee
  • 为什么我不能编写与 Box::new 类型相同的函数?

    如果我编写一个接受一个类型参数的函数 f32 相对于例如 f32 我得到一个错误 the trait bound f32 std marker Sized is not satisfied 文档说这是因为 f32 没有编译时已知的大小 合理
  • 如何将 Autofac 与 WepApi 2 和 Owin 集成?

    我正在使用此包将 Autofac 与我的 WebApi Owin 应用程序集成 https www nuget org packages Autofac WebApi2 Owin https www nuget org packages A
  • 合并包含COCO人物关键点注释的json文件

    我使用注释了一些图像可可注释器 https github com jsbroks coco annotator 我想将这些注释与现有注释 person keypoints train2017 json 和 person keypoints
  • MobileVLCKit 编译时失败

    我正在尝试在我的应用程序中使用适用于 iOS 的 MobileVLCKit 我按照 给出的步骤进行操作构建 iOS 框架 https wiki videolan org VLCKit 我已在 Xcode 5 中将部署目标设置为 iOS 7
  • 在 Slick 3 的事务中执行非数据库操作

    我无法理解新的 SlickDBIOActionAPI 文档中似乎没有很多示例 我使用的是 Slick 3 0 0 我需要执行一些数据库操作 还需要对从数据库接收的数据进行一些计算 但所有这些操作都必须在单个事务内完成 我正在尝试执行以下操作
  • 如何更新jqgrid中的数据值

    我试图在加载时永久更新 jqgrid 中的单元格 我知道我可以使用setCell但这只会更新该页面的值 如果我回到该页面 如果我没有明确执行另一个setCell对于单元格 显示旧值 我也尝试过 setRowData 但它似乎在做同样的事情
  • 无法提交 JPA 事务:事务标记为 rollbackOnly

    我在我正在开发的应用程序之一中使用 Spring 和 Hibernate 但在处理事务时遇到了问题 我有一个服务类 它从数据库加载一些实体 修改它们的一些值 然后 当一切都有效时 将这些更改提交到数据库 如果新值无效 我只能在设置后检查 我
  • 使用c#从图像中裁剪十字矩形

    我想做的基本上是从图像中裁剪一个矩形 但是 它应该满足一些特殊情况 我想在图像上裁剪一个有角度的矩形 我不想旋转图像并裁剪矩形 如果裁剪超出图像大小 我不想裁剪空的背景颜色 我想从起点的后面进行裁剪 当矩形尺寸完成时 它将在起点处结束 我知
  • 身份验证错误 e.Message = OAuth 错误 = 权限+错误

    我在 xamarin android 和 xamarin ios PCL 项目中使用 Xamarin Auth 版本 1 5 0 3 通过 facebook 的 OAuth API 进行应用程序身份验证 登录 我单击 现在不 链接后出现问题
  • 用户身份验证和密码安全的 PHP 最佳实践

    当前无需使用 CMS 或重型框架即可对用户进行身份验证的最佳库 方法是什么 响应应包括您认为应被视为涉及用户身份验证的新 PHP 开发标准的任何建议 OpenID http openid net 是一种根据用户在常见网络服务 例如 Yaho
  • 2 个 NSDate 应该相等不是吗?

    我正在使用 Stig Brautaset http code google com p json framework 的 JSON 库 我需要序列化 NSDate 我正在考虑在将其 JSON化之前将其转换为字符串 但是 我遇到了这种奇怪的行
  • 在 Typescript 中检测 React 子数组长度

    我有一个可以接受 React 的组件children作为节点或节点数组 我希望能够检测到是否children是一个节点数组 但我收到以下 Typescript 错误 TS2339 类型 string 上不存在属性 length 数量 真实