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

描述如何使用typescript反应组件包装器

胡景澄
2023-03-14

如何描述tippy接受typescript将正确使用的任何子级的包装器?

import Tippy, { TippyProps } from '@tippy.js/react'
import React from 'react'
import 'tippy.js/dist/tippy.css'

Tippy.defaultProps = {
  maxWidth: '500px',
}

export const Tooltip: Tooltip = ({ children, content, ...rest }) => {
  if (!children) return null
  if (!content) return children

  return (
    <Tippy content={content} {...rest}>
      {children}
    </Tippy>
  )
}

interface Tooltip {
  (props: MyProps): React.ForwardRefExoticComponent<TippyProps> | null | React.ReactNode
}

interface MyProps {
  content?: string | React.ReactNode
  children?: React.ReactNode
}

这样使用:

   <Tooltip content='Text'>
        <div>123</div>
   </Tooltip>

打字稿给我错误的孩子在返回语句:

输入'string | number | true |{}| ReactElement(元件)

共有1个答案

冯阳成
2023-03-14

错误正好指出了问题所在:您已声明子节点为ReactNode,但ReactNode可以是字符串,Tippy(显然)不接受字符串子节点。改用ReactElement。在调试像这样的typescript错误时,添加空白格式通常很有帮助(至少在您更习惯于阅读它们之前是这样):

Type 
'string | number | true | {} | ReactElement ReactElement Component)> | null) 
| (new (props: any) => Component)> 
| ReactNodeArray 
| ReactPortal' 
is not assignable to type 
'ReactElement ReactElement Component)> | null) 
| (new (props: any) => Component)>'

Type 'string' is not assignable to type 
'ReactElement ReactElement Component)> | null) 
| (new (props: any) => Component)>'

ts(2322) index.d.ts(6, 3): The expected type comes from property 'children' 
which is declared here on type 'IntrinsicAttributes & TippyProps'
 类似资料:
  • 我有一个类扩展了React。组件类,我将为我希望接收的道具传递我自己的接口。问题是当我使用webstorm linter说有问题,指出类型“typeof SomeComponent”上不存在属性“propTypes”。 我不知道为什么会这样...... 的代码为 当我编写以下代码创建函数组件时,会引发类似的异常: 在本例中,使用

  • 问题 你有一个对应于操作系统上一个已打开的I/O通道(比如文件、管道、套接字等)的整型文件描述符, 你想将它包装成一个更高层的Python文件对象。 解决方案 一个文件描述符和一个打开的普通文件是不一样的。 文件描述符仅仅是一个由操作系统指定的整数,用来指代某个系统的I/O通道。 如果你碰巧有这么一个文件描述符,你可以通过使用 open() 函数来将其包装为一个Python的文件对象。 你仅仅只需

  • 我正在使用Inno Setup构建安装,我正在使用组件部分允许最终用户选择要安装的可选项目。 其中一些项目需要更长的描述,以便用户有足够的信息来智能地选择它们。 有没有办法在某处添加更深入的描述?

  • 本文向大家介绍mesos Mesosheres软件包中的Mesos描述和安装,包括了mesos Mesosheres软件包中的Mesos描述和安装的使用技巧和注意事项,需要的朋友参考一下 示例 Mesos是一个集群管理器,旨在通过在多个框架之间动态共享资源来提高资源利用率。它于2009年在加州大学伯克利分校成立,并已在Twitter和Airbnb等许多公司投入生产。经过近两年的培育,它于2013年

  • 我正在学习react,需要一些关于如何构建组件树的建议。 我想建立一个带有相关过滤器的通用列表 我有: > 列表组件:显示项目的列表。道具: 子:prop(一个函数),用于呈现列表

  • 我在学反应。我读过一篇文章,建议我们使用函数组件,而不是扩展react.component的类,所以我跟着做了。我也使用箭头函数而不是函数关键字。即: 有没有一种方法可以使用setState()来代替setName()、setId()、…等?或者任何建议? 非常感谢!