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(使用前将#替换为@)