2016-11-13 44 views
1

我試圖使雙方onPress到發生TouchableOpacity,但第二個是唯一一個火災:TouchableOpacity吞觸摸事件,從來沒有過

<TouchableOpacity onPress={() => console.warn('first button')}> 
    <TouchableOpacity onPress={() => console.warn('second button')}> 
    <Text> 
     PRESS ME 
    </Text> 
    </TouchableOpacity> 
</TouchableOpacity> 

我怎樣才能讓他們兩個火?

在此先感謝!

+1

我不認爲你可以這樣做 - 這不是React Native中的touch responder系統的工作原理。也許你可以描述你爲什麼試圖做到這一點以及你試圖達到什麼目標,並且可能會有更好的解決方案? – jevakallio

+0

如果你的用例很簡單,爲什麼不把你的2'TouchableOpacity'合併到一個? – milkersarac

回答

0

你可以簡單地使用'ref'概念並調用道具onPress來解僱他們。

<TouchableOpacity onPress={() => 
    AlertIOS.alert('firstbutton') 
    } 
    ref={component => this.myFirstTouchable = component} 
> 
    <TouchableOpacity onPress={() => 
     { 
     AlertIOS.alert('second') 
     this.myFirstTouchable.props.onPress() 
     } 
    }> 
     <Text> 
      PRESS ME 
     </Text> 
     </TouchableOpacity> 
    </TouchableOpacity> 
+0

謝謝,但我更喜歡不使用'ref',這不是最佳實踐之一,只有在沒有其他解決方案時才應該使用 – gran33

+0

您確實需要在應用程序中要求避免的內容(2可觸摸元素做2個不同動作的同一個地方)。 – Crash

+1

ref不是「壞習慣」!通過this.refs.myString訪問一個ref,不是通過ref回調訪問元素。有很多使用ref回調的館藏。即使RN本身...(看看UIExplorer的例子) 從反應文檔: __使用ref回調只是爲了設置類的屬性是訪問DOM元素的常見模式。如果您當前正在使用this.refs.myRefName訪問參考,我們建議使用此模式代替.__ – Crash