React native 类型为“boolean”的属性“onPress”无效`
我正在制作react native expo应用程序,我有一个问题。 我有两页。在page1.js中,我设置了page2.js的标题,我对此有一些问题。我有TouchableOpacity,在这里我导航到另一个页面,并在那个里设置createStackNavigator选项的标题。在createStackNavigator选项中,我获得已发送的标题。这给了我一个错误: 警告:失败的道具类型:提供给React native 类型为“boolean”的属性“onPress”无效`,react-native,react-navigation,expo,React Native,React Navigation,Expo,我正在制作react native expo应用程序,我有一个问题。 我有两页。在page1.js中,我设置了page2.js的标题,我对此有一些问题。我有TouchableOpacity,在这里我导航到另一个页面,并在那个里设置createStackNavigator选项的标题。在createStackNavigator选项中,我获得已发送的标题。这给了我一个错误: 警告:失败的道具类型:提供给TouchableOpacity的boolean类型的无效道具onPress,应为功能。 还有一点:
TouchableOpacity
的boolean
类型的无效道具onPress
,应为功能
。
还有一点:
this.props.onPress不是一个函数
我做错了什么?
代码:
//page1.js
从“React”导入React,{Component};
从“react native”导入{样式表、视图、按钮、图像、文本、TouchableOpacity、ScrollView、SafeAreaView、ActivityIndicator};
从“反应导航”导入{Header};
从“react navigation”导入{createStackNavigator,createAppContainer};
从“反应本机矢量图标/Ionicons”导入图标
从“../components/CoursesPlan”导入CoursesPlan
const title=“a”;
setTitle=(数据)=>{
标题=数据;
}
getTitle=()=>{
返回标题;
}
类Page1扩展组件{
render(){
返回(
setTitle(“标题”),
this.props.navigation.navigate('CourseOne'{
id:1,
})}>
);
}
}
导出默认createStackNavigator({
主要内容:{
屏幕:主,
导航选项:{
标题:null,
},
},
第1页:{
屏幕:第1页,
导航选项:({navigation})=>({
headerTitle:getTitle(),
头型:{
海拔:0,
边界宽度:1,
borderBottomColor:#dddddd“,
},
}),
},},{
initialRouteName:'Main',
}
);
您没有为onPress提供函数,因为您没有将它用大括号括起来
为您的onPress
功能尝试以下操作:
onPress={() => {
setTitle("title");
this.props.navigation.navigate('CourseOne', { id: 1,});
}}>
首先,为什么要修改常量 你不能像那样改变头绪 请参阅react导航文档 如果不使用this.state,getTitle()将不会重新呈现视图 您使用this.props,但尚未编写构造函数
类测试扩展了组件{
构造器(道具){
超级(道具)
}
render(){
返回()
}
}
class Test extends Component {
constructor(props) {
super(props)
}
render() {
return(<View />)
}
}