Javascript 响应本机对子新闻事件的响应

Javascript 响应本机对子新闻事件的响应,javascript,react-native,events,Javascript,React Native,Events,我正在寻找一种解决方案,允许我从父组件响应所有子组件的按下事件(包括嵌套在其他组件中的子组件)。特别是,我对新闻发布事件感兴趣(例如用于TouchableOpacity的onPressOut等) 我不想打断孩子对那个事件的反应,我只想对那个事件做出更进一步的反应来执行其他任务。因此,我不能在父组件上使用捕获阶段,因为它将停止在链中进一步传播事件 我也不想手动向父对象的每个子对象添加按键响应功能,因为会有很多子对象,这会成为一项乏味的任务,尤其是在重构或重新实现时 父TouchableOpacit

我正在寻找一种解决方案,允许我从父组件响应所有子组件的按下事件(包括嵌套在其他组件中的子组件)。特别是,我对新闻发布事件感兴趣(例如用于TouchableOpacity的onPressOut等)

我不想打断孩子对那个事件的反应,我只想对那个事件做出更进一步的反应来执行其他任务。因此,我不能在父组件上使用捕获阶段,因为它将停止在链中进一步传播事件

我也不想手动向父对象的每个子对象添加按键响应功能,因为会有很多子对象,这会成为一项乏味的任务,尤其是在重构或重新实现时

父TouchableOpacity组件允许我在冒泡事件阶段,在没有子事件响应时捕获所有按下事件。但是,如果子级响应它们,事件不会在链中进一步传播,因此,它将永远不会到达父级TouchableOpacity

代码:

<TouchableOpacity onPressOut={ this.doSomethingInParentWhenAChildIsPressed >
    <TouchableOpacity onPressOut={()=>{
        /* doing something in child, parent should react in addition to this */
    } />
    <View>
        <TouchableOpacity onPressOut={()=>{
            /* doing something in nested child, parent should react in addition to this */
        } />
    </View>
    <View>
        <Text>When this text is pressed, the parent TouchableOpacity responds</Text>
        <View>
            <TouchableOpacity onPressOut={()=>{
                /* doing something in other nested child, parent should react in addition to this */
            } />
        </View>
        <View>
            <Text>The parent TouchableOpacity also responds on this text being pressed</Text>
        </View>
    </View>
</TouchableOpacity>

{
/*在孩子身上做点什么,父母除了应该对此做出反应之外*/
} />
{
/*在嵌套子对象中执行某些操作时,父对象除此之外还应作出反应*/
} />
按下此文本时,父TouchableOpacity将响应
{
/*在其他嵌套子级中执行某些操作时,父级除此之外还应作出反应*/
} />
按下此文本时,父TouchableOpacity也会作出响应
你知道有什么方法可以做到这一点吗


在允许事件在链中进一步传播的同时,是否可能以某种方式从父级捕获touch start事件?我一直在寻找任何允许我创建合成事件并在React Native中发出它的东西,但我找不到任何解决方案。

u可以定义一个函数,当按下父级时调用该函数,当按下子级时调用相同的函数

class App extends React.Component {
  onPress = () => {
    console.log('Parent Pressed');
  };
  render() {
    return (
      <View style={styles.container}>
        <TouchableHighlight onPress={this.onPress}>
          <View style={styles.button}>
            <Text>Parent</Text>
            <TouchableHighlight onPress={() => {
              console.log('Child Pressed')
              this.onPress()
            }} style={styles.child}>
              <Text>Child</Text>
            </TouchableHighlight>
          </View>
        </TouchableHighlight>
      </View>
    );
  }
}
类应用程序扩展了React.Component{
onPress=()=>{
console.log('Parent Pressed');
};
render(){
返回(
父母亲
{
console.log('Child Pressed')
这个
}}style={style.child}>
小孩
);
}
}

签出此零食exmaple

谢谢您的建议,但是,我的问题是如何做到这一点,而无需将父函数添加到孩子的press事件处理程序中。原因是我有使用自定义PanResponder事件的自定义子组件,由于捕获start和move事件的工作方式,这些子组件很难工作。在这些PanResponder事件期间,Capturin和调用父press事件会干扰PanResponder处理程序的逻辑并中断某些功能。