this.props.onPress不是一个函数

Tom*_*omb 6 javascript reactjs react-native react-navigation

我有一个HomePage.js包含关于我们按钮,当我点击我要显示的那个按钮AboutUs.js.该HomePage.js显示正确,但是,当我点击按钮,它给了我下面的错误:this.props.onPress不是一个函数.(在'this.props.onPress(e)'中,'this.props.onPress'是Object的一个实例)

我有 App.js

import React, { Component } from 'react';
import { StackNavigator } from 'react-navigation';
import HomePage from './HomePage';
import AboutUs from './AboutUs';


const App = StackNavigator({
    HomePage: {
        screen: HomePage,
        navigationOptions: {
            header: () => null
        }
    },
    AboutUs: { 
      screen: AboutUs,
        navigationOptions: {
          header: () => null
        }
     }
});

export default App;
Run Code Online (Sandbox Code Playgroud)

然后我有一个可重用的组件Button.js:

import React from 'react';
import { Text, TouchableOpacity } from 'react-native';

const Button = ({ onPress, children }) => {
    return (
        <TouchableOpacity onPress={onPress}>
            <Text>{children}</Text>
        </TouchableOpacity>
    );
};

export { Button };
Run Code Online (Sandbox Code Playgroud)

HomePage.js这是渲染Button组件.当我按下它时,我得到上面提到的错误

import React, { Component } from 'react';
import { View, Text } from 'react-native';
import { Button } from './Button.js';
import AboutUs from './AboutUs';

class HomePage extends Component{

  render() {
    const { navigate } = this.props.navigation;
    return(
      <View>
        <Button
          onPress={() => navigate('AboutUs'), { name: 'About Us' }}
          >About Us</Button>
      </View>
    )
  }
}

export default HomePage;
Run Code Online (Sandbox Code Playgroud)

AboutUs.js

import React, { Component } from 'react';
import { Text, View } from 'react-native';

class AboutUs extends Component {
    render() {
        return (
      <View>
            <Text>About us!</Text>
      </View>
        );
    }
}

export default AboutUs;
Run Code Online (Sandbox Code Playgroud)

Bru*_*our 8

我有一个类似的问题,同样的错误:“this.props.onPress is not a function”我犯的错误是使用:

onPress={this.props.incrementCount()}
Run Code Online (Sandbox Code Playgroud)

正确的语法是:

onPress={ () => this.props.incrementCount()}
Run Code Online (Sandbox Code Playgroud)

后者返回函数的结果。


Sag*_*b.g 7

这不是有效的函数引用

onPress={() => navigate('AboutUs'), { name: 'About Us' }}
Run Code Online (Sandbox Code Playgroud)

好像你{ name: 'About Us' }在函数ref中混淆而不是作为支柱Button