ReactJS - 孩子如何找到其父母?

2024-06-23

ReactJS 有没有办法让组件知道它的父组件是谁?

编辑1:不管这样做有什么好处,有办法吗?

我还没有找到一种 React 方法来做到这一点 - 从我所看到的,这个想法是将回调从父级传递给子级,并且子级调用回调 - 不知道回调实际上是在父母。

我尝试过设置“所有者”属性,这个想法似乎可行,但我想知道最好的方法是什么?

e.g.

<Parent>
  <Child owner={this}/>
</Parent>

然后在子组件中,我可以这样做owner.method,而且看起来效果很好。我知道这不是真正的父母/孩子关系,但这是我在测试中发现的最接近的关系。

有些人可能会说回调是一种更简洁的方法,但某些事物(例如 RadioButtonGroup 和 RadioButton)的父/子关系似乎很自然,并且在我看来,了解这种关系将受益匪浅。

编辑2:所以这是不可能的?

我不喜欢它不受支持的想法是 HTML 可以用零 javascript 进行标记 - 这意味着, 默认功能 - 某些元素需要有父元素 - 它们被定义为其他元素的子元素(例如 ul 和 li)。这 在 JSX 中不会发生,因为如果之间存在交互 元素-那里has是绑定的 javascript 事件 组件在一起 - 每次您使用它们时。设计师不能 只需编写类似 HTML 的语法 - 必须有人介入并添加一些内容 那里有 javascript 绑定 - 然后进行维护 更难。我认为这个想法对于覆盖默认行为是有意义的, 但默认行为should得到支持。默认情况下会 需要知道您的父母或您的所有者是谁。


不这样做有很多好处,主要的两个是:可重用性和封装性。

TL;DR 你可能永远不想这样做。

假设我们的 RadioButton 有这个公共接口:

<RadioButton active={true} onSelect={function(event){}}>text</RadioButton>

我们可以构造另一个名为 SuperRadioButton 的组件,它可能有不同的呈现方式,但仍然具有与 RadioButton 相同的公共 api,因此它是 RadioButtonGroup 的有效子组件。

如果我们访问父级,那么父级的内部就会成为这些组件的公共 api 的一部分,并且我们需要更加小心地更改代码,因为任何这些组件的更改都可能会导致整个应用程序打破。

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

ReactJS - 孩子如何找到其父母? 的相关文章

  • 如何在 Jasmine JS 中重用 beforeEach/afterEach?

    当使用 JasmineJS 编写测试时 我有许多具有类似 beforeEach afterEach 代码的测试 有没有办法使用 JasmineJS 测试套件实现继承模型 我可以将所有测试分组为一个describe但在这种情况下 我将以包含所
  • 计算两列中两个总和的平均值,并将其显示在 JQGrid 的下一列中

    I m using Jqgrid with summery row at grouping level Now I want to know one thing that Is it possible to show average cal
  • Webpack、Sass - 超出最大调用堆栈大小

    我正在为我的 JS 应用程序使用 Webpack 对于样式 我使用 Sass 我的应用程序非常大 所以我使用了很多 mixins 和 includes 在过去的几天里 虽然应用程序的 SASS 数据增长了一些 我多次遇到相同的以下错误 未捕
  • React:为什么内联样式需要双括号语法 style{{..}}

    我的问题涉及内联反应组件的样式 据我了解 在 JSX 中 variableName 需要大括号来引用任何 JS 变量或表达式 因此 使用以下构造添加内联样式对我来说很有意义 所需的样式存储在 JavaScript 变量中 然后在 JSX 标
  • 如何使用React Native在屏幕上绘图?

    我正在尝试在 React Native 中实现一个 Android 绘图应用程序 我正在使用 PanResponder 但我不知道如何获取用户触摸的部分的坐标 我尝试过使用react native svg但我不知道该放在哪里PanRespo
  • 将新数据添加到 d3 Streamgraph 时的转换

    我使用d3绘制了一个与官方示例非常相似的流图http bl ocks org mbostock 4060954 http bl ocks org mbostock 4060954 唯一的区别是我如何用新数据更新它 我不仅想要垂直 y 值 过
  • 将值传递给映射函数 - CouchDB

    我想知道是否可以将值传递给 couchDB 设计文档中的映射函数 例如 在下面的代码中 可以传递用户输入的值并使用该值来运行地图函数 也许我可以传递用户UserName当他们登录时 然后根据地图功能显示视图 function doc if
  • 在 json 对象中执行 javascript 代码?

    有远吗 所以像这样 key1 val1 key2 val2 some code document getElementById someid innerHTML test 那么 some code 会在没有任何用户干预的情况下执行吗 No
  • 为什么 jQuery 对损坏标记的解释与浏览器不同?

    我之前已经回答过这个问题 https stackoverflow com a 19101905 1253312 但我并不完全理解why答案是正确的 答案的要点 p p function jqrender html a href http w
  • 将jQueryUI datepicker附加到div(显示位置错误)

    我在输入上使用 jQueryUI datepicker 默认情况下 jQueryUI 会附加 ui datepicker div to the body该文件的 有问题的输入位于屏幕上的 弹出 div 中 这意味着该 div 之外的任何点击
  • 如何在 Google 地图上旋转叠加图像?

    我正在尝试将一系列叠加层放置到 Google 地图上 我正在跟随地面覆盖层的示例代码 https developers google com maps documentation javascript examples groundover
  • 在 Javascript 中实现 Zobrist 哈希

    我需要在 Javascript 中为国际象棋引擎实现 Zobrist 哈希 我想知道实现此目的的最佳方法是什么 现在 我不是计算机科学家 也从未上过正式的算法和数据结构课程 所以如果我在这方面有点偏离 我很抱歉 据我了解 我需要一个 64
  • jQuery onclick 隐藏其父元素[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想隐藏 li tag on a 使
  • 在 Bootstrap 选择器上使用 jQuery 取消选择选项

    我对一些 UI 元素使用 Bootstrap SelectPicker 它允许用户选择多个选项并将其呈现在段落标签中的屏幕上 他们还应该能够删除选定的选项 这是我的代码 用于将选定的选项渲染到屏幕上 以便每个选项旁边都会显示一个 X 单击它
  • 在 ReactJS 中更改 URL onClick

    在我的项目中我有一个TabComponent它显示 3 个选项卡 首页 热门 全部 现在 我正在使用context反应维持 activetab它存储当前选项卡 toggleTab改变的方法activetab using setState 选
  • 解析字符串:提取单词和短语 [JavaScript]

    我需要在以空格分隔的术语列表中支持确切的短语 用引号引起来 因此 用空格字符分割相应的字符串已经不够了 Example input foo bar lorem ipsum baz output foo bar lorem ipsum baz
  • execCommand 的替代品

    我希望创建一个所见即所得编辑器 使用 jQuery 作为框架 我可以使用不同的方法来简化生产 我现在确实有一个正在工作的编辑 而且运作良好 我使用 iFrame 并将其设计模式设置为打开并从那里开始 然而 有一些事情困扰着我 以更改所选文本
  • 如何拦截javascript中innerHTML的变化?

    我需要拦截网页内单元格内容的任何更改 以下代码显示 addEventListener 不起作用 function modifyText alert var el document getElementById mycell el inner
  • 如何将国家/地区代码与电话号码分开?

    我的数据库中有很多电话号码 例如 1 123 456 7890 我要做的是将国家 地区拨号代码 在本例中为美国 加拿大的 1 与电话号码分开 我尝试创建所有国家 地区的 JSON 列表 并在加载页面时将电话号码和国家 地区代码分开 它工作正
  • ASP.NET MVC3 Ajax.ActionLink - 条件确认对话框

    我有一个 Ajax ActionLink 仅当满足某些条件 用户有未保存的更改 时 我才希望显示一个确认对话框 我创建了一个 JavaScript 函数 它根据需要显示确认对话框 并根据响应返回 true 或 false 我将其绑定到 Ac

随机推荐

  • 匹配前面没有字符的模式

    我想让我的正则表达式匹配一个模式 前提是它前面没有字符 抑扬顿挫 就我而言 我的正则表达式 w g 用于测试的文本 Test Anotherword 匹配 Test 和 Anotherword 即使后者前面有扬抑符 我试图通过插入来阻止 在
  • 按 x 分组,其中 y = A 和 B 和 C

    我有一个存储产品价格信息的表 它有一列用于显示产品 ID 数量和折扣 用户购买 2 件可享受 1 英镑折扣 购买 3 件可享受 2 英镑折扣 等等 我想提取所有具有特定数量折扣的产品 例如 仅购买 1 2 件或 3 件可分别享受 5 英镑
  • GCC 优化对位操作的有效性

    以下是在 x86 64 上设置 C 中单个位的两种方法 inline void SetBitC long array int bit Pure C version array 1 lt
  • net.sqlcipher.database.SQLiteException:文件不是数据库:,编译时:从 sqlite_master 选择 count(*)

    错误这一行 mDataBase SQLiteDatabase openDatabase dbPath 123 null SQLiteDatabase NO LOCALIZED COLLATORS 当打开数据库时 但有什么问题吗 如何使用密码
  • URLSession 最佳实践 - 多个请求

    我需要一些关于最佳实践的指导URLSession NSURLSession 我的要求规定我必须执行临时 定期 HTTP GET 请求 即每隔几分钟 然后也许每 30 秒 随意改变 无论如何 我已经实现了这一点 如下所示 我有一个包含如下代码
  • 在同一变量集行中组合多个 bash 参数替换,而不使用任何其他命令[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想要组合的示例 sVar whoami sVar sVar sVar sVar 1 Output 用户名第一个字符大写 要求 单线
  • ISODate 未定义

    我正在尝试使用 nodejs mongoose 从 mongodb 获取结果 var dateStr new Date year month day 0 0 0 var nextDate new Date year month day 23
  • Qt:使用 QObject::connect 指定多种连接类型

    我想知道是否可以指定多种连接类型 例如 我希望我的连接类型是排队连接和唯一连接 是否可以在一份声明中具体说明这一点 QObject connect ptrSender SIGNAL ptrReceiver SLOT Queued and u
  • 测试滚动

    在我的角度应用程序中 我有一个页面 侧面有导航链接 单击该链接时 会将页面向下滚动到匹配的元素 我如何在量角器中为此编写 e2e 测试 有没有类似 抓取第一个可见的 h1 之类的东西 您可以使用 javascript 的 window pa
  • java 如何检查字符串是否包含大写

    我正在开发一个程序 它允许用户输入字母数字键 并根据某些条件检查它是否是有效键 其中之一是该键是否包含大写字母 这是我到目前为止所尝试过的 else if key contains QWERTYUIOPASDFGHJKLZXCVBNM UI
  • 按对象的两个字段排序。爪哇

    我想按日期和名称排序 例如我有这样的约会 2019 01 01 CCCC 2019 02 01 Aaaa 2019 03 01 CCC 2019 02 01 BBBB 2019 03 01 Aaaa 2019 01 01 Aaaa 我需要按
  • JqG​​rid 搜索选项:工具栏搜索与标准搜索窗口

    我想允许用户仅使用一个 sopt 设置来过滤每一列 但对于更高级的搜索 对于高级用户 我想允许他们使用内置搜索按钮 但我想覆盖 odata 中列出的各个列搜索选项 例如 我希望我的用户只有 eq 但我希望高级用户能够从 odata 中进行选
  • 有什么理由不在 Grand Central Dispatch 队列中使用睡眠?

    我想让队列在循 环时等待一小段时间 我正在考虑我的选择 并正在测试暂停恢复队列 但这似乎需要几个移动部件 所以我正在考虑使用 sleep 或 usleep 来代替 这更多的是一个通用的线程函数 我想知道我是否应该避免使用睡眠 而是坚持使用
  • 为什么 while 循环停留在 raw_input 处? (Python)

    在下面的代码中 我尝试使用 python 脚本创建 更多 命令 unix 方法是将文件读入列表并一次打印 10 行 然后询问用户是否要打印接下来的 10 行 Print More txt 问题是 如果我给出 y 或 Y 作为输入并且不继续
  • 在哪里托管 Python 脚本?

    我知道这是一个非常基本的问题 但我正在挣扎 我现在知道自己想做什么 但不知道到底要通过谷歌搜索什么才能到达那里 我有一个小型 python 脚本 它运行一个 csv 使用 API 调用中的每一行 然后在 API 给出特定响应时将行添加到另一
  • getline() 与 ifstream 的意外行为

    为了简化 我尝试使用 ifstream 类及其 getline 成员函数读取 CSV 文件的内容 这是这个 CSV 文件 1 2 3 4 5 6 和代码 include
  • Node.js Express 网站实时更新数据

    我正在尝试实现一些我认为应该非常简单的事情 但我发现的所有教程和示例似乎都有点矫枉过正 我在做什么 我定期获取天气信息 并且我想在每次获取时更新网站上的文本 而无需用户刷新浏览器 几乎每个关于实时数据更新的教程都建议使用socket io
  • 将 0 更改为 1 或反之亦然的最优雅的方式

    做接下来的事情最优雅的方式是什么 int i oneOrZero if i 0 i 1 else i 0 你可以假设i只能有 1 或 0 值 i 1 XOR https en wikipedia org wiki Exclusive or值
  • 尽管是独立的,但在更改另一个 numpy 数组时,该数组会意外更改

    我在大型代码中发现了一个错误 并将问题简化为以下情况 虽然每一步我只改变w2 但是当我在每一步打印出来时w1 它也发生了变化 因为在第一个循环结束时我将它们分配为相等 我读过这篇文章 但上面写着以防我做w1 w2 它会解决问题 但并不能解决
  • ReactJS - 孩子如何找到其父母?

    ReactJS 有没有办法让组件知道它的父组件是谁 编辑1 不管这样做有什么好处 有办法吗 我还没有找到一种 React 方法来做到这一点 从我所看到的 这个想法是将回调从父级传递给子级 并且子级调用回调 不知道回调实际上是在父母 我尝试过