【发布时间】:2017-02-08 21:02:59
【问题描述】:
我有以下 React Native 代码,当用户点击图像时运行 press() 方法。我想从事件对象中获取 itemIndex 道具。我在 press 方法中设置了一个断点,并在 Watch 中添加了一些表达式。从手表我确定事件的目标(事件起源)是正确的图像。 itemIndex 道具也可用。正在处理的元素是 currentTarget,Watch 看到它是一个“RCTView”,我期待一个 TouchableOpacity,所以 TouchableOpacity 下面可能是一个 View? currentTarget itemIndex 属性未定义,为什么?如何从 currentTarget 中获取道具?
我想这样做是为了避免为每个渲染项目创建添加方法。
仅供参考,
ref={(c) => this._input = c} 将不起作用,因为它正在循环运行。
onPress={(e) => this.press(e, i)} 创建了一个我试图避免的新函数。
观看
- target._currentElement.props.itemIndex: 2
- target._currentElement.type.displayName: "RCTImageView"
- currentTarget._currentElement.props.itemIndex:未定义
-
currentTarget._currentElement.type.displayName: "RCTView"
press: function(event){ var currentTarget = ReactNativeComponentTree.getInstanceFromNode(event.currentTarget); var target = ReactNativeComponentTree.getInstanceFromNode(event.target); var currentTargetIndex = currentTarget._currentElement.props.itemIndex; var targetIndex = target._currentElement.props.itemIndex; var url = this.state.data.items[currentTargetIndex].url; Linking.openURL(url).catch(err => console.error('An error occurred', err)); }, render: function() { return ( <ScrollView horizontal={true} showsHorizontalScrollIndicator={false} style={styles.galleryView}> { this.state.data.items.map((data, i) => <TouchableOpacity itemIndex={i} key={i} activeOpacity={0.5} onPress={this.press} > <Image itemIndex={i} key={i} source={{uri:data.previewImageUri}} style={styles.galleryImage} /> </TouchableOpacity> ) } </ScrollView> ); }
【问题讨论】:
标签: react-native