gpt4 book ai didi

react-native - 如何将组件引用传递给 onPress 回调?

转载 作者:行者123 更新时间:2023-12-03 09:24:00 26 4
gpt4 key购买 nike

我确实使用 onPress“处理程序”渲染了以下类型的列表。

enter image description here

我已经意识到 onPress 处理程序是无用的,因为我无法获得按下种族的引用。我得到 ref is not defined 错误。

var races = Engine.possibleRaces;

function racePressed(ref) {
console.log("REF: " + ref); // is never called
}

var races = Engine.possibleRaces;
var rowViews = [];
for (var i = 0; i < races.length; i++) {
rowViews.push(
<Text
ref={i}
onPress={() => racePressed(ref)} // ref is not defined
style={styles.raceText}>{races[i].text}
</Text>

);
}

<View style={{width: Screen.width, flexDirection:'row', flexWrap: 'wrap', alignItems: "center"}}>
{rowViews}
</View>

我也尝试过将 i 作为参数传递。它不起作用,因为它在迭代结束后具有值。基本上它有races.length 值。
  onPress={() => racePressed(i)} // Same as races.length

编辑:

我确实将问题隔离到以下程序。
'use strict';
import React, {
AppRegistry,
Component,
StyleSheet,
Text,
View
} from 'react-native';

let texts = [{text: "Click wrapper text1"}, {text: "Click wrapper text2"}];

class sandbox extends Component {

rowPressed(ref, i) {
console.log("rowPressed: " + ref + " " + i)
}

render() {

var rows = [];

for (var i = 0; i < texts.length; i++) {
rows.push(
<Text
ref={i}
onPress={() => this.rowPressed.bind(this, i)}
style={styles.raceText}>{texts[i].text}
</Text>
);
}

return (
<View style={styles.container}>

<View>
{rows}
</View>

</View>
);
}
}

const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center'
}
});

AppRegistry.registerComponent('sandbox', () => sandbox);

不调用回调并且除了以下警告之外没有抛出任何错误
[tid:com.facebook.React.JavaScript] Warning: Each child in an array or iterator should have a unique "key" prop. Check the render method of `sandbox`. See https://fb.me/react-warning-keys for more information.

最佳答案

我建议您在构造函数中绑定(bind)该函数,例如..

constructor(props){
super(props);
//your codes ....

this.rowPressed = this.rowPressed.bind(this);
}

这将绑定(bind) this rowPressed 函数的上下文如您所愿,使您的代码正常工作。

此外,要消除警告消息,您应该提供唯一的 key每个 <Text> 的属性元素,使用 <Text key={i} ....>在您的代码中应该可以工作。

关于react-native - 如何将组件引用传递给 onPress 回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35663375/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com