React Native - onPress 函数不触发

React Native - onPress function does not trigger

我一直在尝试使用以下代码创建一个在警告框中显示消息的按钮:

buttonClicked= () => {return alert("clicked")}

<TouchableOpacity onPress={()=>this.buttonClicked()} style={styles.skip}>
 <Text>Skip</Text>
</TouchableOpacity>

但是,单击 "Skip" 文本不会触发 buttonClicked 功能。我能够触发该功能的唯一方法是当我从 onPress class 中删除箭头功能时。 onPress={this.buttonClicked()} 但是,这会导致函数仅在应用程序首次启动时触发。 我不确定我做错了什么。

代码的所有部分都期望 App.js:

import React, { Component } from 'react'
import { Text, View, Image, StyleSheet, TouchableOpacity} from 'react-native'

export default class Tutorials extends Component {
    constructor()
    {
        super();
        this.state={
            currentPage: 1,
            totalPages: 3,
        }
    }

    setCurrentPage = () => {return alert("clicked")}

    renderTutorial = () =>{
        if(this.state.currentPage === 1)
        {
            return(
                <View style={styles.container}>
                    <Image style={styles.arrow} source={require('../../assets/path.png')}/>
                    <Text style={styles.pages}>{this.state.currentPage + ' of ' + this.state.totalPages}</Text>

                    <TouchableOpacity onPress={()=>this.setCurrentPage()} style={styles.skip}>
                        <Text>Skip</Text>
                    </TouchableOpacity>


                    <Text style={styles.header}>Refer to friend</Text>
                    <Text style={styles.paragraph}>Your friend will also receive credits</Text>

                    <TouchableOpacity style={styles.inviteFriendsButton} onPress={()=>alert("clicked!")}>
                        <Image source={require('../../assets/buttonInviteFriends.png')}/>
                    </TouchableOpacity>
                </View>
            );
        }
        if(this.state.currentPage === 2)
        {
            <View>Page 2</View>
        }
        if(this.state.currentPage === 3)
        {
            <View>Page 3</View>
        }
    }


    render() {
        return (
            this.renderTutorial()
        )
    }
}

试试这个

onPress={this.buttonClicked}

尝试按以下方式修改您的代码:

buttonClicked = () => alert("clicked")

<TouchableOpacity onPress={this.buttonClicked} style={styles.skip}>
 <Text>Skip</Text>
</TouchableOpacity>

或出于测试目的将其直接插入 onPress:

<TouchableOpacity onPress={() => alert("clicked")} style={styles.skip}>
 <Text>Skip</Text>
</TouchableOpacity>

在这种情况下,您应该将通过 onPress 道具触发的功能更改为

buttonClicked() {
    return alert("clicked")
}
<TouchableOpacity onPress={this.buttonClicked} style={styles.skip}>
   <Text>Skip</Text>
</TouchableOpacity>

希望对你有用。

见下例

import * as React from 'react';
import { Button, View, Text, TouchableOpacity } from 'react-native';

class App extends React.Component {
  buttonClicked = () => {
    return alert('clicked');
  };
  render() {
    return (
      <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
        <TouchableOpacity
          onPress={this.buttonClicked}  
          style={styles.skip}>
          <Text>Skip</Text>
        </TouchableOpacity>
      </View>    
    );
  }
}

const styles = {
  skip: {
    width: '90%',
    padding: 10,
    backgroundColor: 'green',
  },
};

export default App;

有疑问欢迎留言。

问题是 absolute 定位更改解决了问题。