在 TypeScript 中使用 React children 道具

在 React 中正确输入childrenprop 一开始可能会遇到一些困难。如果您尝试将它们输入为特定的 JSX 类型,您可能会遇到渲染子组件的问题。选择的悖论也存在问题,因为有多个可用选项来键入 children 道具。这可能会导致决策疲劳。

在本文中,我将根据经验分享我推荐的解决方案。如何在 Windows 7 中回滚驱动程序为了完整起见,我还将分享一些其他可能相关的方法。

跳跃前进:

  • JSX 中的孩子

  • 支持的子类型

  • 使用PropsWithChildren类型

  • 显式使用ReactNode类型

  • 使用FunctionComponent(或FC)类型

  • 使用Component类组件的类型

让我们开始吧。

JSX 中的孩子

当你写一个带有开始和结束标签的 JSX 表达式时,鼠标滚动不起作用?这是在 Chrome、Firefox 上滚动的方法它们之间传递的内容被称为它们的“孩子”。

孩子在 JSX 表达式的开始和结束标记之间传递

考虑以下人为的示例:

<Border> Hey, I represent the JSX children! </Border>

在此示例中,什么是 Windows 主题以及如何更改它?文字字符串指的是在 中呈现的子项。Hey, I represent the JSX children!Border

相反,为了访问 JSX 结束标签和开始标签之间传递的内容,如何刷新或重置 Windows 8(及其含义)React 在一个特殊的 prop 中传递这些内容:props.children

例如,Border可以children按如下方式接收 prop:

const Border = ({children}) => {
   return <div style={
    
    {border: "1px solid red"}}>
      {children}
   </div>
}

Border接受childrenprop,然后渲染带有边框样式children的.div1px solid red

这是 prop 的基本用法children,StrokeIt:在Windows中获取鼠标手势,通过绘图命令即接收和操作在 JSX 表达式的开始和结束标记内传递的内容。

支持的子类型

严格来说,有一些受支持的内容类型可以放在 JSX 表达式的开始和结束标记中。什么是MD5校验和以及如何验证它以下是一些最常用的:

字符串

文字字符串是有效的子类型,如下所示:

<YourComponent> This is a valid child string </YourComponent />

请注意,在 中YourComponent,将只是字符串。在 MS Outlook 中为传入邮件创建文件夹规则 – 指导技术props.childrenThis is a valid child string

建兴兴业

您同样可以将其他 JSX 元素作为有效子元素传递。什么是 Windows 7 中的电源诊断报告以及如何使用它?这在组合不同的嵌套组件时通常很有用。下面是一个例子:

<Wrapper>
  <YourFirstComponent />
  <YourSecondComponent />
</Wrapper>

混合子类型也是完全可以接受的,如下图:

<Wrapper>
  I am a valid string child
  <YourFirstComponent />
  <YourSecondComponent />
</Wrapper>

JavaScript 表达式

表达式是同样有效的子类型,如下所示:

<YourFirstComponent> {myScopedVariableReference} </YourFirstComponent>

请记住,中的表达式JSX写在大括号中。

功能

函数是同样有效的子类型,如下所示:

<YourFirstComponent> 
  {() => <div>{myScopedVariableReference}</div>} 
</YourFirstComponent>

如您所见,childrenprop 可以用相当广泛的数据类型来表示!3 个可帮助您了解如何使用 Windows 8 的应用程序您的第一个倾向可能是手动输入这些内容,如下所示:

type Props = {
  children: string | JSX.Element | JSX.Element[] | () => JSX.Element
}

const YourComponent = ({children} : Props) => {
  return children
}

这似乎是个好主意,但它并不能完全代表children道具。如何使用 Posterous 快速开始写博客片段、门户和忽略的渲染值(例如undefined、null、true或 )怎么样false?

完整的表示可能看起来像这样:

type ReactText = string | number;
type ReactChild = ReactElement | ReactText;

interface ReactNodeArray extends Array<ReactNode> {}
type ReactFragment = {} | ReactNodeArray;
type ReactNode = ReactChild | ReactFragment | ReactPortal | boolean | null | undefined;

type Props = {
  children: ReactNode
}

// source: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/d076add9f29db350a19bd94c37b197729cc02f87/types/react/index.d.ts

请参阅ReactPortal和ReactElement的扩展类型。Excel 数据透视表报告:内容、方法和一些提示它们看起来复杂吗?他们很有可能这样做。

我想说的是,在实践中,您不想children手动输入 prop。相反,我建议使用下面讨论的官方支持的类型。

使用PropsWithChildren类型

该类型采用您的组件 prop 并返回一个具有适当类型的 prop 的联合类型。如何在 Microsoft Excel 中高效使用快速填充您不需要额外的工作。React.PropsWithChildrenchildren

实际上,这是类型的定义PropsWithChildren:

type PropsWithChildren<P> = P & { children?: ReactNode };

类型如何propsWithChildren工作

Foo假设你有一个带有 props 的组件FooProps:

type FooProps = {
  name: 'foo'
}

export const Foo = (props: FooProps) => {
    return null
}

您可以继续介绍children道具如下:

import { PropsWithChildren } from 'react'

type FooProps = {
  name: 'foo'
}

export const Foo = (props: PropsWithChildren<FooProps>) => {
    return props.children
}

当你传递PropsWithChildren给你的组件 prop时FooProps,如何向 VLC 播放器添加扩展你会得到children内部类型的 prop。

在大多数情况下,这是输入childrenprop 的推荐方法,如何在 Windows 10 上修复高 Ping因为它需要更少的样板,并且childrenprop 是隐式输入的。

显式使用ReactNode类型

在您必须显式键入 prop 的情况下children,如何修复 Windows 10 中的黑色文件夹背景问题您可以继续使用ReactNode类型。

记住类型的定义PropsWithChildren:

type PropsWithChildren<P> = P & { children?: ReactNode };

propsWithChildren 类型利用了 reactNode 类型

除了依赖PropsWithChildren,如何在 GIMP 中为文本添加阴影你还可以children直接输入 prop:

import { ReactNode } from 'react'

type FooProps = {
  name: 'foo'
  // look here 
  children: ReactNode
}

export const Foo = (props: FooProps) => {
    return props.children
}

使用FunctionComponent(或FC)类型

通用接口FunctionComponent也可用于适当地键入childrenprop。如何修复 Windows Media Player 添加到媒体库不起作用在内部,此接口依赖于PropsWithChildren.

以下是您将如何使用它:

import { FunctionComponent } from 'react'

type FooProps = {
  name: 'foo'
}

export const Foo: FunctionComponent<FooProps> = (props) => {
    return props.children
}

请注意,该类型是easeFC的别名。FunctionComponent它们的用法类似,如下图:

import { FC } from 'react'

type FooProps = {
  name: 'foo'
}

export const Foo: FC<FooProps> = (props) => {
    return props.children
}

使用Component类组件的类型

大多数现代 React 代码库不再使用类组件,如何在 Windows 11 上启用和使用休眠模式特定用例除外。

如果您发现自己需要children在类组件中键入 prop,请利用该Componentprop,如下所示:

import { Component } from 'react'

type FooProps = {
  name: 'foo'
}

class Foo extends Component<FooProps> {
  render() {
    return this.props.children
  }
}

类似于FunctionComponent接口及其FC别名,Component类型自动包含childrenprop。

结论

在可能的情况下,使用PropsWithChildren类型,但也不要害怕children直接输入 prop,无论是在类中还是在功能组件中。

猜你喜欢

转载自blog.csdn.net/weixin_47967031/article/details/129987257