如何在 React 中验证组件组合/“基础”组件/渲染的根组件?

2024-05-02

众所周知,当我们想要“扩展”一个<Component>在React中,我们实际上并没有通过继承来扩展它的类,而是使用组合来自定义渲染它props在我们的“派生”组件中,如下所示:

class Component extends React.Component {
  render() {
    return (<div className={ this.props.special_prop }>
              I'm a component!
            </div>);
  }
}

class DerivedComponent extends React.Component {
  render() {
    return (<Component special_prop='custom value' />);
  }
}

所以这将创建一个新类型的组件<DerivedComponent>,这仍然会呈现常规<Component>,但通过指定自定义值props.

我的问题是,有什么方法可以验证这一点<DerivedComponent>实际上渲染了一个<Component>作为它的根组件/它是从这个意义上“派生”的<Component>?

我这么问是因为我正在开发一个列表组件,它将呈现列表中多种类型的列表项组件,但即使这些列表项组件是不同的类型,每个组件实际上都会呈现相同的根组件,只是使用不同的props。我想强制执行,通过propTypes或类似的,即children传递给列表组件的实际上是基于该公共根渲染组件的。

如果 React 使用经典继承,那么检查每个列表项实例是否也是该公共组件的实例就很简单了;然而,我不相信 React 有 API 来查询组合的根渲染组件。

React 中是否有某种方法可以强制执行children基于特定的根渲染组件?


None

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

如何在 React 中验证组件组合/“基础”组件/渲染的根组件? 的相关文章

随机推荐

  • 在什么情况下使用html 5的
    标签来代替

    你在什么场景下使用 section html 5 的标签 代替 div 章节的示例包括章节 选项卡式对话框中的各个选项卡式页面或论文的编号部分 网站的主页可以分为介绍 新闻和联系信息几个部分 部分元素表示通用文档或应用程序部分 部分元素不是
  • REDIRECT URIS OAuth 2.0 是否有命名标准?

    我只想知道 REDIRECT URIS 是否有命名标准 Twitter LinkedIn Microsoft Facebook 和 Google 何时使用 OAuth 2 0 因为 如果我这样写我的域名 http domain com ac
  • 从heroku 中删除“server”和“via”标头?

    当我向本地服务器发送请求时 这是我的响应标头 Connection close Content Length 7 Content Type application json charset utf 8 Date Thu 27 Aug 201
  • 随机化节点顺序 xslt

    我有一个包含如下节点的 XML 文件
  • 调用 new SqlConnection() 会挂起程序

    这个把我难住了 我什至没有尝试连接到数据库 当这段代码到达我实例化一个新的 SqlConnection 对象的行时 它只是挂在那里 不会抛出异常或任何东西 我已经尝试将其编译为2 0 3 5和4 0 它们都挂了 当然 它也适用于我的机器和你
  • 为什么我的 git 预提交钩子不修剪行尾的空白?

    我在 Mac Mojave 上 我在 git templates hooks pre commit 创建了一个文件 我想删除我正在提交的文件行尾的空格 我希望这种情况在全球范围内发生在我的所有项目中 A git hook script to
  • 有没有办法为数据表绘制UMAP或t-SNE图?

    我有一个巨大的文件 下面是一小部分数据 如下所示 我想绘制一个 PCA 我可以使用 PCA 函数绘制 PCA 但它看起来有点乱 因为我有 200 列 所以我想也许 t SNE 或 UMAP 效果更好 但我无法使用它们进行绘图 我想在图中显示
  • Python GTK 信号处理程序不工作

    我正在使用 GTK 为 GUI 编写一个 Python 应用程序 我注意到从终端使用 Ctrl C 关闭它不起作用 我发现这是因为一个错误 所以我尝试手动处理该信号 问题是 如果我将默认行为设置为默认行为 则会捕获信号并正确关闭应用程序 但
  • 我如何从 Rust 的 Vec 中获取项目?

    我正在寻找一种方法consumes a Vec并返回一个元素 无需恢复的开销Vec的不变量的方式remove and swap remove do fn take
  • Gradle:根据配置文件加载属性文件

    我想编写一个 gradle 构建脚本 它可以在不同的环境 开发 实时 中工作 在每个环境中 我必须加载不同的属性集 目标目录 数据库等 是否有一种 gr adle 方法可以读取依赖于环境或配置文件的属性文件 您可能想查看Gradle 属性插
  • # 的未定义方法“type_cast”(NoMethodError)

    ActiveRecord ConnectionAdapters Column曾经有一个方法叫做type cast它接受一个字符串并将其转换为 到适当的实例 这似乎在某个时候被删除了 我不知道应该做什么来替换它 这是使用它的代码 Create
  • iOS 7 中强制横向 ViewController

    我有十多个处于纵向模式的 ViewController 但无论设备的方向如何 我都需要强制一个处于横向模式 这是解决方案 1 将 LandscapeViewController 嵌入到子类 NavigationController 中 并使
  • 枚举由 Autofac 生命周期跟踪的一次性物品

    Autofac 使用生命周期范围作为处理工作单元期间创建的所有组件的一种方式 虽然这是一个强大的功能 但很容易编写不能正确处理生命周期范围的代码 这会导致跟踪的一次性数量随着时间的推移而增长 实际上是内存泄漏 有没有办法监控生命周期范围在任
  • Maven pom.xml 中“SNAPSHOT”版本的含义[重复]

    这个问题在这里已经有答案了 在处理多个项目时 我遇到了很多版本号有问题的情况 快照后缀 例如
  • Sympy - 分数操作

    我基本上希望 Sympy 生成乳胶代码 frac x 1 3 y 但每当我要求它生成事物的 Tex 组件时 Sympy 总是返回 frac x 3 frac 1 3 如何避免分解方程 并将等于运算符分配给另一个变量 我还没有尝试将 y 部分
  • 发送短信之前显示确认对话框

    我是 Android 新手 我已经完全绑定了我的应用程序 但我希望现在对其进行更改 当有人发送短信时 我想显示一个发送短信的确认对话框 询问是否发送 我必须为此创建一个公共类 我已经编写了源代码 它工作正常 但如果用户不单击 是 或 取消
  • 共享扩展 - 自 iOS 14 以来首次尝试时应用程序未显示在共享菜单中

    升级到 Xcode 12 和 iOS 14 后 似乎开始发生一些奇怪的事情 应用程序以前在共享菜单选项中显示良好 但突然它表现得很奇怪 并且仅在第二次尝试后才显示 我的目标是获取网页网址 这是我的共享激活规则 我什至尝试过新项目 并添加了带
  • JS奇怪的行为[重复]

    这个问题在这里已经有答案了 有人可以帮助我 为什么我们在 JS 片段中有这种行为 var foo function return hi console log foo var foo1 function return hi console
  • 如何在没有android studio的情况下签署android apk

    我已经发现很多很多关于这一点的令人困惑的答案 How do I Sign release debug android app没有 Android Studio 例如 在签署 ionic cordova phonegap 应用程序时 您可以在
  • 如何在 React 中验证组件组合/“基础”组件/渲染的根组件?

    众所周知 当我们想要 扩展 一个