我有一组组件app->page->list_container->list->item
我的目标是通知app
点击发生在item
级别的parent->child
。
如果有像<Child onClick={this._onClick}> ...
之类的简单关系,我可以使用道具并执行类似:this.props.onClick()
的操作,然后使用app
进行回调。
但是,使用组件树执行相同技巧的最佳本机React样式收据是什么?如何通知item
,点击"+"
而未调用Flux / Reflux,Elm和其他支持的库?
答案 0 :(得分:3)
标准反应方式:
将onClick
函数作为支撑向下传递到组件树是执行此操作的标准反应方式。
在<app>
:
<page onClick={this._onClick}>
在<page>
:
<list_container onClick={this.props.onClick}>
等等。
或者您可以使用:
<list_container {...this.props}>
自动将父组件中的任何道具传递给子组件。
在一棵深树中,这可以而且将会非常繁琐/繁重。 React不是为此目的而设计的 React用于(自上而下)智能和快速组件树渲染 您提到的通量模式的框架旨在处理其他交互功能。
备用快捷方式(不推荐):
您可以使用的快捷方式是直接在<app>
组件内的DOM上添加一个侦听器,用于处理项目上的click事件:
在<app>
组件中,添加:
componentDidMount: function() {
var itemElementInDOM = document.getElementById('myItem');
itemElementInDOM.addEventListener('click',this._onClick);
}
在您的<item>
组件中,为该项目提供一个(唯一的)ID。
我一般不推荐这个:
<item>
)可能会被渲染多次,然后您需要
确保每个ID都是唯一的附加逻辑。