React Native:组件上的onPress不起作用

Jos*_* An 5 javascript reactjs-flux react-native

所以我react-native-router-flux在我的ReactJS应用程序中用于导航,但是我在使用组件时遇到了困难.

例如,通过单击链接时按下一页,以下代码段可以完美地工作.

export default class MainMenuPage extends Component {
  render() {
    return (
      <View>
        <Text>Main Menu</Text>
        <TouchableOpacity onPress={Actions.bookmarksPage}>
          <Text>Bookmarks</Text>
        </TouchableOpacity>
        <TouchableOpacity onPress={Actions.settingsPage}>
          <Text>Settings</Text>
        </TouchableOpacity>
      </View>
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

虽然以下代码片段在您按下链接时没有任何反应.

export default class MainMenuPage extends Component {
  render() {
    return (
      <View>
        <Text>Main Menu</Text>
        <MenuButton name="Bookmarks" onPress={Actions.bookmarksPage} />
        <MenuButton name="Settings" onPress={Actions.settingsPage} />
      </View>
    );
  }
}

class MenuButton extends Component {
  render() {
    return(
      <TouchableOpacity>
        <Text>{this.props.name}</Text>
      </TouchableOpacity>
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

显然,第二个代码片段更清晰.

Tim*_*imo 5

你必须将onPress道具传递给TouchableOpacity:

class MenuButton extends Component {
  render() {
    return(
      <TouchableOpacity onPress={this.props.onPress}>
        <Text>{this.props.name}</Text>
      </TouchableOpacity>
    );
  }
}
Run Code Online (Sandbox Code Playgroud)