通过名称获取 React 组件

2023-12-08

有没有办法通过名称访问 React 组件?例如,使用 React devtools,我可以搜索组件并使用以下命令访问控制台中最近选择的组件$r。有没有办法在没有 React 开发工具的情况下访问这些组件? IE。我可以使用查询来获取这些组件吗?

更多信息:我有兴趣为使用 React 的特定网页编写 chrome 扩展。我知道我想要与之交互的组件的名称,但我只是不确定如何实际访问它。


这是一个遍历 React 组件层次结构并将其转换为树结构的函数。只需使用以下命令访问组件的名称c.constructor.name:

const {
  isDOMComponent,
  getRenderedChildOfCompositeComponent,
  findRenderedComponentWithType
} = React.addons.TestUtils;

function traverse(c, node) {
  if (isDOMComponent(c)) {
    return;
  }

  node.children.push({
    name: c.constructor.name,
    children: []
  });

  const ccc = getRenderedChildOfCompositeComponent(c);

  if (isDOMComponent(ccc)) {
    React.Children.forEach(ccc.props.children, function traverseCompositeChildrenOf(child) {
      if (child.type) {
        const cccc = findRenderedComponentWithType(ccc, child.type);
        traverse(cccc, getNode(node, c.constructor.name));
      }
    });
  } else {
    traverse(ccc, getNode(node, c.constructor.name));
  }
}

像这样使用它:

const root = React.render(<Root/>, document.createElement('div'));

let tree = {
    name,
    children: []
};

let tree = traverse(root, tree); // your component hierarchy by name in a tree

取自此回购协议

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

通过名称获取 React 组件 的相关文章

随机推荐

  • 使用spatiallite 将 GIS 缓冲值度以米为单位

    我是 Spatialite 的新手 我有以下查询 select A from linka as A pointa as B where Contains Buffer B Geometry 100 A Geometry 我实际上想创建 10
  • 强制一种方法等待另一种方法完成

    在我的原始视图控制器中 在转到目标视图控制器之前 我调用一个获取关键参数的方法 然后在以下方法中在目标视图控制器中设置关键参数 然而 关键参数是在之前设置的doSomethingToGetKey方法已完成 因此传递了一个空值 我想知道是否有
  • 如何创建自己的资源名称?

    我可以在中使用我自己的资源名称吗themes xml 例如
  • 由于未注册 Windows.Launch 合同,Windows 10 分配的访问应用程序无法启动

    我有一个 WPF 应用程序 我已使用以下命令将其转换为 UWP 应用程序DesktopAppConverter为了运行它分配的访问权限模式 转换后的应用程序在非分配访问模式下运行时可以工作 可以安装并正常运行 但是 当我将其设置为分配的访问
  • 无法使用 cURL 将 SSH 密钥发送到 Github

    我正在尝试将我的公共 ssh 密钥发送到 Github 我将密钥设置为 shell 中的变量 但它给出了key is invalid You must supply a key in OpenSSH public key format错误
  • 在堆栈弹出中反应本机路由通量重新渲染组件

    如何重新运行 React 组件生命周期方法来确定在从堆栈转换回以前的屏幕时是否需要重新渲染React Native 路由器 Flux 设想 场景 A gt B gt A 假设 A 是初始场景 我们使用 a 从 A 导航到 B推即 Actio
  • 为什么我们先复制然后移动?

    我在某处看到代码 其中有人决定复制一个对象 然后将其移动到类的数据成员 这让我感到困惑 因为我认为移动的全部目的是为了避免复制 这是示例 struct S S std string str data std move str 这是我的问题
  • 带有列表和字典的嵌套循环

    所以我有点陷入了一个问题 本质上 我想使用列表和字典运行一个嵌套循环 但我似乎不知道如何操作 我的用例是运行一个 playbook 它将通过使用主体列表签署公钥来生成 SSH 证书 我有一个充当跳转主机的主机列表 称为 bastionHos
  • 如何获取java日历中每月第一个星期三的日期

    我如何使用java日历类获取该月下一个第一个星期三的日期 例如 Today 24 03 2012 the next first Wednesday will be 04 04 2012 On 05 04 2012 the next firs
  • 这个预提交钩子如何修复尾随空格?

    发生了什么事这个预提交钩子 我认为更改文件会导致它们被重新暂存 bin sh A git hook script to find and fix trailing whitespace in your commits Bypass it w
  • x86-64 分段错误保存堆栈指针

    我目前正在关注本教程 但我不是那所学校的学生 GDB 给我一个分段错误thread start在线上 movq rsp rdi save sp in old thread s tcb 当我回溯时 这是附加信息 0 thread start
  • 如何使用 JPA 映射 Duration 类型

    我在一个类型的类中有一个属性字段javax xml datatype Duration 它基本上代表一个时间跨度 例如 4 小时 34 分钟 JPA 告诉我这是一个无效类型 这并没有让我感到震惊 这有什么好的解决办法吗 我可以实现我自己的
  • 如何将输出写入 Android 中的日志?

    我想将一些调试输出写入日志以使用 logcat 进行查看 如果我向 System out 写入一些内容 则该内容已显示在 logcat 中 写入日志并向输出添加级别和标签的干净方法是什么 调查android util Log 它允许您写入具
  • 如何捕获 Flash 影片成功加载时的事件触发?

    我目前正在使用 jQuery 以及 swfObject 将 swf 影片动态嵌入到我的网页中 我目前在将 immem 的音乐播放器嵌入我的网页时遇到问题 因为他们的嵌入代码没有任何加载屏幕 因此 当我使用 swfObject 替换元素时 该
  • 从 res/raw 文件夹设置铃声

    我正在尝试在中设置音频文件 res raw 以编程方式将文件夹作为默认铃声 我有以下文件 如下所示 myapp res raw file mp3 我有以下代码 但不幸的是它完全无法设置铃声 我不确定是什么导致了这个问题 但想知道是否有人有任
  • django-admin.py:找不到命令(bluehost 服务器)

    经过6个多小时的挣扎 我决定寻求帮助 任务 在Django的帮助下创建一个项目工具 Windows Vista Putty SSH地点 Bluehost www bluehost com 服务器 我已经阅读过有关同一问题的这些主题 bash
  • TIME_WAIT 连接过多,出现“无法分配请求的地址”

    我有一个小型 Web 应用程序 它打开 TCP 套接字连接 发出命令 读取响应 然后关闭对特定 REST 端点的每个请求的连接 我已经开始使用 Apache JMeter 对端点进行负载测试 并注意到运行一段时间后 我开始看到诸如 无法分配
  • Laravel 4 - 无法检索一对多关系中的数据

    我有一个报价模型 class Quote extends Eloquent public function quote lines return this gt hasMany QuoteLine 还有一个 QuoteLine 模型 cla
  • 添加 Azure Ad Oauth2 JWT 令牌声明

    我只是想知道是否有办法通过 Azure 门户向 Azure Ad OAuth2 JWT 令牌添加或指定自定义声明 或者这是唯一可能的代码方面 据我所知 Azure AD目前不支持发出自定义声明 作为解决方法 我们可以使用 Azure AD
  • 通过名称获取 React 组件

    有没有办法通过名称访问 React 组件 例如 使用 React devtools 我可以搜索组件并使用以下命令访问控制台中最近选择的组件 r 有没有办法在没有 React 开发工具的情况下访问这些组件 IE 我可以使用查询来获取这些组件吗