My Class Code
problem is onPress function give the following error if i use it in the loop
onPress={() => this.onPressButton()}
nothing happens if i use this line of code
onPress={this.onPressButton}
I know this has to do something with binding which i am not getting kindly help
export default class PlayGame extends Component {
navigate(routName){
this.props.navigator.push({
name: routName
})
}
onPressButton() {
alert("You tapped the button!");
}
render() {
//var selectedLetter = Globals.URDU_ALPHABETS[Math.floor(Math.random()*Globals.URDU_ALPHABETS.length)]; //will be used when app is MVP
//add selected array
var selectedLetter = Globals.URDU_ALPHABETS[1];
var randLetters = shuffle(randomLetters(Globals.URDU_ALPHABETS,selectedLetter));
playSelectedLetter(selectedLetter.name);
return (
<View style={{flex: 3,backgroundColor: 'silver', flexDirection: 'column', justifyContent:'space-between', alignItems: 'center'}}>
<View style={{width: 400, height: 8, flex: 1, backgroundColor: 'steelblue'}} />
<View style={{flex: 3,backgroundColor: 'silver', flexDirection: 'row', justifyContent:'space-between', alignItems: 'center'}}>
{Object.keys(randLetters).map(function(key,index) {
return <TouchableHighlight key={index} letterName={randLetters[key].name} onPress={() => this.onPressButton()} >
<View style={{width: 50, height: 50, backgroundColor: 'skyblue'}} key={index}><Text key={index} >{randLetters[key].name}</Text></View>
</TouchableHighlight>
}
)}
</View>
<TouchableHighlight onPress={this.onPressButton}>
<Text>Button</Text>
</TouchableHighlight>
<View style={{width: 0, height: 0, backgroundColor: 'skyblue'}}><Text></Text></View>
</View>
);
}
Try changing:
Object.keys(randLetters).map(function(key,index) {
to :
Object.keys(randLetters).map((key,index) => {
You can bind either in the class constructor or these two ways in render
{this.onPressButton.bind(this)} {() => this.onPressButton()}