与“PropTypes.element”相对应的“defaultProp”的正确值是什么?

2023-12-15

我有一个组件,我希望接受另一个组件作为道具,并渲染它。我希望传递的组件是可选的,并且在这种情况下不渲染任何内容。

下面的代码可以完美运行:

const Component = ({ Inner }) => (
  <div style={{ borderStyle: "solid" }}>
    <Inner />
  </div>
);

Component.propTypes = {
  Inner: PropTypes.element
};

Component.defaultProps = {
  Inner: () => null
};

但是,在第一次加载页面时,prop-types抱怨:

警告:失败的道具类型:无效的道具Inner类型的function供应给Component,预期有一个 ReactElement。

我目前的解决方案是重新定义propType as PropTypes.oneOfType([PropTypes.element, PropTypes.func]),但这似乎完全不正确。

我应该做什么propType or defaultProp实际上是?

沙箱中的 SSCCE.

这个问题类似于如果元素的 proptype 是默认值?,但这已经接受了一个不起作用的答案,即使它起作用了,对我来说也没有多大帮助,因为我正在真正使用 React Native。正如我所说,我没有以与本机反应有关的方式提出这个问题,我的例子works, 只是prop-types是个大坏蛋。


使用 elementType 的类型将解决您的问题。

Component.propTypes = {
  Inner: PropTypes.elementType
};

由于您的 prop 是一个 React 组件,因此我们使用 elementType。如果您打开 prop-types 的源代码,您会在那里找到它。

enter image description here

希望这对您有帮助。

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

与“PropTypes.element”相对应的“defaultProp”的正确值是什么? 的相关文章

  • 使用 ref 触发反应 dropzone 不起作用

    我正在实现这个库 https github com felixrieseberg React Dropzone Component https github com felixrieseberg React Dropzone Compone
  • 如何映射轮播的子项数组?

    我正在尝试将 Carousel 组件包装在映射对象数组周围作为组件的子级 目前我只能让映射创建映射对象的 1 个子对象 轮播需要像这样
  • 没有 Props 的 TypeScript React State

    我想利用 TypeScript 中的静态和强类型 但仅限于状态 因为我不打算采用任何道具 当我尝试传递接口时 最终出现错误 import as React from react import Link from react router d
  • 在 React Native 中从父组件调用子函数

    我正在开发我的第一个 React Native 应用程序 我想要实现的是从父组件执行子函数 情况如下 Child export default class Child extends Component myfunct function c
  • 从旧的外部 Javascript 更改 React 组件的状态?

    如何从旧的 jQuery soup 中更改 React 组件的状态 代码 我有一个这样的组件 var AComponent React createClass getInitialState function return ids rend
  • ReactJS - Redux Form - 如何根据单选字段元素有条件地显示/隐藏元素?

    我对 Redux 比较陌生 我有一个表单 其中有一些无线电输入 是 或 否 基本上 我想根据该无线电输入选择有条件地显示包含另一个 redux 表单字段的另一个元素 有直接的方法可以做到这一点吗 我想检查一下formProps site v
  • 如何使用Create React App安装React

    嗨 我对反应真的很陌生 我不知道如何实际安装它 也不知道我需要做什么才能在其中编写代码 我下载了node js并且安装了v12 18 3以及NPM 6 14 6 但是每次我尝试在许多网站上提到的create react app安装方法中输入
  • 可下载文件 - 盖茨比

    由于某种原因 尝试下载文件时失败 我尝试了几种不同的方法 但都失败了 我读过一些关于 pdf word 文件在盖茨比中被 禁止 的内容 默认 a href route to file a 好像不行 显示下载失败 任何帮助表示赞赏 See 将
  • React PropTypes 与 Flow

    PropTypes 和 Flow 涵盖相似的内容 但使用不同的方法 PropTypes 可以在运行时向您发出警告 这有助于快速找到来自服务器等的格式错误的响应 但是 Flow 似乎是未来 并且具有泛型等概念 是一个非常灵活的解决方案 Nuc
  • Apple M1 芯片上的 React Native run-android 抛出错误,“无法打开脚本的 dsl 通用类缓存”

    我正在使用 React Native 构建移动应用程序 我现在尝试在 Android 模拟器上运行我的应用程序 首先 这是继续这个问题 https stackoverflow com questions 69260732 react nat
  • 使用 Flask/WTForms 和 React 进行 CSRF 保护

    有没有人成功地为使用 React 作为受控组件 提交到 Flask 后端 最好使用 WTForms 的表单实现了 CSRF 保护 我看过很多部分答案 其中一个是关于 Django 的 但找不到任何关于 Flask 的明确答案 我的大问题似乎
  • 打字稿 - 字符串'不可分配给类型'FC

    我收到以下错误 Type props PropsWithChildren lt amount number gt gt string is not assignable to type FC lt amount number gt Type
  • KeyboardAvoidingView - 隐藏键盘时重置高度

    我正在使用 React NativeKeyboardAvoidingView设置我的高度View当显示键盘时 但是当我关闭应用程序中的键盘时 视图的高度不会变回原来的值
  • 在 React Native 中将 Props 传递到屏幕

    我已经开始学习 React Native 并且一如既往地从创建可重用组件开始 我了解了如何在创建自定义组件时传递和访问 props 我想在 React Native 中创建一个基本屏幕 它具有通用属性 并且我的应用程序中的所有屏幕都可以设置
  • 如何正确更新反应钩子状态内的数组

    我一直在尝试更新代表反应状态的数组内的对象 当输入的值更改时应该更新该对象 我可以自己找到一种方法来更新它 但我不太确定这是正确的方法 因为当我打开反应开发工具并转到组件选项卡并单击我正在处理的组件时 在输入输入时状态不会立即更新 并且为了
  • 在 IOS 中通过 Linking.openURL React Native 打开设置

    我想从我的应用程序打开 ios 设置应用程序 设置目标是 settings gt notification gt myapp 打开和关闭推送通知 有一些关于如何链接到设置的文档 但我不知道如何打开深层链接 通知 gt myapp 我怎样才能
  • React Context 的范围是什么?

    我不清楚在哪里Context可以在 React 应用程序中创建 我可以在组件树中的任何位置创建上下文吗 如果可以 该上下文的范围是否仅限于创建它的子级 或者 Context 本质上是全局的 我可以在文档中的哪里找到这个 案例 我在页面上多次
  • Redux 状态在 mapStateToProps 中未定义

    我目前正在关注this http teropa info blog 2015 09 10 full stack redux tutorial html教程 我遇到了一些障碍mapStateToProps在下面的代码中 import Reac
  • 将 Sweet Alert 弹出窗口添加到 React 组件中的按钮

    我为 Bootstrap 和 React 找到了这个完美的 Sweet Alert 模块 我在 Meteor 应用程序中使用它 http djorg83 github io react bootstrap sweetalert http d
  • Flux + React.js - 操作中的回调是好还是坏?

    让我解释一下我最近遇到的问题 我有 React js Flux 驱动的应用程序 有一个列表显示文章数量 注意 应用程序中有多个不同的列表 和文章详情查看在里面 但每个列表只有一个 API 端点 它返回文章数组 为了显示我需要的详细信息fin

随机推荐

  • 8086中的物理地址是如何产生的?

    In the 8086架构中 内存空间大小为 1 MiB 并分为每个最大 64 KiB 的逻辑段 即它有20地址线因此使用以下方法 数据段寄存器左移4位然后添加到偏移寄存器 我的问题是 尽管所有寄存器都只有 16 位 但我们如何进行移位操作
  • 刷新服务引用会更新app.config

    每次我对 WS 进行更改并更新 Visual Studio 中的引用时 VS 都会使用其他不必要的信息覆盖我的 app config 因此 当我之后启动客户端时 我收到此错误 处理标头时发现错误 代码生成器所做的更改是remove每个绑定中
  • Xpage, createForm=false 禁用链接上的 SSJS 事件?

    我问这个只是为了在这里澄清 我不小心将 createForm 属性设置为 false 然后我期望一个链接事件应该打开另一个页面 但不再起作用 这是 SSJS 事件的预期行为吗 当您禁用表单创建时在链接中 正如 Per 提到的 所有事件都需要
  • Windows 窗体 - 单击按钮将数据添加到列表视图[重复]

    这个问题在这里已经有答案了 我有一个 winform 应用程序 点击后会填充一些数据 button UpdateTS 如何添加存储在变量中的数据 单击该按钮后可用 我想要在列表视图中显示的数据存储在一个名为的数组中 results butt
  • 公开声明中“iostat”参数的含义是什么?

    我对打开文件中使用 iostat 参数感到困惑 如上所述 当 open 命令成功时 iostat 的值为 0 open unit 99 file vel zcor22 txt status old iostat ierr err 100 1
  • 结构体动态数组和函数调用 f(const struct_type *const data[])

    以下代码警告类型不兼容 解决此代码的正确方法是什么 thanks typedef struct a struct struct type void f const struct type const data unsigned n void
  • 如何使用(由 mod 重写驱动)漂亮的 URL 读取 $_GET 变量

    各位程序员大家好 我第一次使用很好的 URL 但我不太明白为什么我无法从脚本中读取 oAuth 响应 这是我的设置 htaccess RewriteCond REQUEST FILENAME f RewriteCond REQUEST FI
  • C# Winforms 线程:调用封闭表单

    下面的代码演示了我的困境 该代码创建一个后台线程来处理某些内容 然后使用结果调用 UI 线程 如果后台线程在窗体关闭后调用窗体上的 Invoke 则可能会引发异常 它在调用 Invoke 之前检查 IsHandleCreated 但表单可能
  • Python 多处理傻瓜教程 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我试图找到一个简单的示例 清楚地显示单个任务被划分为多处理 坦率地说 许多示例都过于复杂 从而使流程更难以使用 有人愿意分享他们的突破性样本或例子吗
  • Kendo UI 网格 - 如何绑定到子属性

    如何在 Kendo 网格的模型设置中将列 字段绑定到 json 结果的子属性 在 JavaScript 中 例如 我希望网格包含以下列 FName LName Street 和 Address 基本上我想展平 Web 服务返回的层次结构 剑
  • 在哪里可以找到 os.urandom() 的源代码?

    我想调查和研究python 3 7的代码os urandom 功能 我查看了各自的标准库os py 但它既没有在那里定义 也没有在那里导入 我还尝试 grep 查找定义 usr lib python3 7 grep rFl def uran
  • Java 录制/混合两个音频流

    我有一个java应用程序 它记录来自混音器的音频并将其存储在字节数组中 或将其保存到文件中 我需要的是同时从两个混音器获取音频 并将其保存到音频文件 我正在尝试使用 wav 问题是我可以获得两个字节数组 但不知道如何合并它们 合并 我并不是
  • Scala 编译器不使用 case 类的 unapply 方法来进行模式匹配,这是为什么?

    abstract class Animal case class Cat name String extends Animal case class Dog name String extends Animal 假设我定义了 Cat 和 D
  • jqGrid添加项目复选框字段默认为选中

    这是一个简单的问题 我有一个运行良好的 jqGrid 但我想设置一个复选框的默认值 以便在用户添加新项目时进行检查 这是一段代码 name Active index active width 80 align center sortable
  • Symfony 4、如何实现通用控制器即服务?

    我有这个控制器 Controller1 php
  • 如何使用applescript以编程方式获取最新下载的文件名?

    我需要在 Mac 上以编程方式获取文件名 我使用 Selenium 下载文件 并从下载文件夹中选择相同的文件以编程方式安装 我使用 Applescript 执行相同的操作 我被困在运行时获取文件名 而且我的下载页面 url 不包含下载文件的
  • dart FFI 中“char*”的“本机类型”是什么?

    我有一个这样的功能C语言 char getString return SOME STRING 现在我想通过调用它FFI in dart 这是我的代码 import dart io import dart ffi void main List
  • 为什么Java接口可以在这些代码中实例化呢? [复制]

    这个问题在这里已经有答案了 可能的重复 创建接口的 对象 我是 Java 新手 根据我的理解 我们无法实例化一个Interface 我们只能实例化一个class它实现了一个interface The new关键字用于从类创建对象 但是 当我
  • SceneKit:内存过多

    我已经没有想法了 SceneKit 正在堆积内存 而我才刚刚开始 我正在显示SNCNodes它们存储在数组中 这样我就可以分离分子的组成部分以进行动画 这些树模型分子我最终可能会展示 50 个 比如说每 章 一个 问题是 当我转到另一章时
  • 与“PropTypes.element”相对应的“defaultProp”的正确值是什么?

    我有一个组件 我希望接受另一个组件作为道具 并渲染它 我希望传递的组件是可选的 并且在这种情况下不渲染任何内容 下面的代码可以完美运行 const Component Inner gt div div