React Native:按钮onPress无法正常工作

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了React Native:按钮onPress无法正常工作相关的知识,希望对你有一定的参考价值。

导航无法按下按钮。这是我的登录页面。我想从主屏幕注销登录屏幕onPressLogout()

index.js

class Profile extends Component{
static propTypes = {
    navigator: PropTypes.shape({
        getCurrentRoutes: PropTypes.func,
        jumpTo: PropTypes.func,
    }),
}
onPressLogout() {
    const routeStack = this.props.navigator.getCurrentRoutes();
    this.props.navigator.jumpTo(routeStack[0]);
}
render(){
  return (
         <Container>
             <View style={styles.container}>        
               <Header>
                     <Button 
                     style={styles.button}
                     onPress={() => this.onPressLogout()}
                     >
                     <Icon name="ios-power" />
                     </Button>
                     <Title>Logout</Title>
               </Header>
            </Container>
 );
}

并在routeStack中

const routeStack = [
{ name: 'Login', component: Login},  
]
答案

要么使用.bind()来改变this的背景。或者,使用箭头功能。

bind()

这需要一个构造函数。

constructor() {
  super();
  this.onPressLogout = this.onPressLogout.bind(this);
}

箭头功能

onPressLogout = () => {
  const routeStack = this.props.navigator.getCurrentRoutes();
  this.props.navigator.jumpTo(routeStack[0]);
}

边注:

你可以在这里做一些ES6解构

onPressLogout = () => {
  const {
     navigator: {
       getCurrentRoutes,
       jumpTo
     }
  } = this.props;
  const routeStack = getCurrentRoutes();
  jumpTo(routeStack[0]);
}

以上是关于React Native:按钮onPress无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

如何在 react-native 的 onPress 按钮上滚动底部?

如何在 react-native 中的 onPress 按钮上滚动顶部?

React Native:onPress:如何切换按钮文本和函数调用?

React Native Paper 按钮不会触发 onpress

Wix React-Native-Navigation:自定义组件按钮的 onPress

React Native:如何更改 onPress 事件的视图