React Native onpress无法正常工作

mia*_*rde 7 react-native

onRadioPressed似乎没有被称为 - 我做错了什么?我还需要获取"clicked"项中包含的文本.

我相信我可以得到它event.nativeEvent.text,对吗?

谢谢你的帮助.

class RadioBtn extends React.Component {
  constructor(props) {
    super(props);
    this.state = {

    };
  }

  onRadioPressed(event) {
    console.log('RADIOBUTTON PUSHED:');
  }

  render() {

    return (
        <View style={styles.radioGrp}>
            <View style={styles.radioContainer}>
                <TouchableHighlight onpress={() => this.onRadioPressed.bind(this)} underlayColor='#f1c40f'>
                    <Text style={styles.radio}>Left</Text>
                </TouchableHighlight>
            </View>
            <View style={styles.radioContainer}>
                <TouchableHighlight onpress={() => this.onRadioPressed.bind(this)} underlayColor='#f1c40f'>
                    <Text style={styles.radio}>Right</Text>
                </TouchableHighlight>
            </View>
        </View>
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

小智 7

所以在这里:

<TouchableHighlight onpress={() => this.onRadioPressed.bind(this)} underlayColor='#f1c40f'>
    <Text style={styles.radio}>Left</Text>
</TouchableHighlight>
Run Code Online (Sandbox Code Playgroud)

首先onpress改为onPress.在这里,() => this.onRadioPressed.bind(this)您指定一个箭头函数,它返回另一个函数,this.onRadioPressed.bind(this)但您永远不会触发它.

正确的方法:

// You can do either this
<TouchableHighlight onPress={() => this.onRadioPressed()} underlayColor='#f1c40f'>
    <Text style={styles.radio}>Left</Text>
</TouchableHighlight>

// Or you can do either this
<TouchableHighlight onPress={this.onRadioPressed.bind(this)} underlayColor='#f1c40f'>
    <Text style={styles.radio}>Left</Text>
</TouchableHighlight>
Run Code Online (Sandbox Code Playgroud)

我建议你查看这篇文章https://medium.com/@housecor/react-binding-patterns-5-approaches-for-handling-this-92c651b5af56#.irpdw9lh0