我有以下 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)}创建一个我试图避免的新函数。
手表
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} …Run Code Online (Sandbox Code Playgroud)如何在React Native中不使用'this'关键字的情况下访问元素的属性?我有一个与父类本身绑定为“ this”的函数,但我想访问被单击元素的属性。这是代码-
import {Circle} from 'react-native-svg';
export default App extends Component {
constructor(props) {
super(props);
this.state = {activeX: null}
}
handleTouch(event) {
const x = event.target.cx; //How to access "cx" property here?
this.setState({ activeX: x });
}
render() {
return (
<Circle cx='10' cy='10' r='5' onPress={this.handleTouch.bind(this)}/>
<Circle cx='20' cy='20' r='5' onPress={this.handleTouch.bind(this)}/>
);
}
}
Run Code Online (Sandbox Code Playgroud)