【发布时间】:2026-01-08 02:45:01
【问题描述】:
我有一个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;
然后我有一个可重用的组件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 };
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;
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;
【问题讨论】:
-
你想在这里传递什么?
onPress={() => navigate('AboutUs'), { name: 'About Us' }}似乎 `, { name: 'About Us' } 部分是多余的 -
这不是一个有效的函数引用
onPress={() => navigate('AboutUs'), { name: 'About Us' }} -
{name: 'About Us'} 将是页面的标题,它在
title: navigation.state.params.name中引用,错误进一步说明In 'this.props.onPress(e)', 'this.props.onPress' is an instance of Object。 -
正如 Sag1v 和我的评论已经指出的那样。您没有将函数传递给 onPress 道具,而是传递了一些无效的东西(语法错误)。我认为您的意思是将 { name: 'About us' } 对象作为导航函数的第二个参数传递。苏你搞砸了大括号
-
好的,知道了!让它成为官方答案
标签: javascript reactjs react-native react-navigation