无法在 react-navigation 5 上的屏幕之间导航
Posted
技术标签:
【中文标题】无法在 react-navigation 5 上的屏幕之间导航【英文标题】:Can't navigate between screen on react-navigation 5 【发布时间】:2020-03-08 19:49:44 【问题描述】:我正在从不同的方式开发反应导航。 问题是我尝试过的最后一次。
我正在尝试使用自定义组件(某种按钮被驱逐)从 HomeScreen 导航到 DetailScreen。 问题是:“TypeError: Undefined is not an object (evalating 'this.prop.navigation.navigate')
有人可以帮助我理解这个问题吗? (注意:我正在使用 react-navigation 5)
我给你不同的文件:
//fichier app.js
import 'react-native-gesture-handler'
import React from 'react';
import HomeScreen from './src/screens/HomeScreen'
import DetailScreen from './src/detailscreen'
import NavigationContainer from '@react-navigation/native'
import createStackNavigator from '@react-navigation/stack';
const Stack = createStackNavigator();
export default function App()
return (
<NavigationContainer>
<Stack.Navigator>
<Stack.Screen name="Home" component=HomeScreen />
<Stack.Screen name="Detail" component=DetailScreen />
</Stack.Navigator>
</NavigationContainer>
)
文件主屏幕
import React from 'react';
import View, Text, Button from 'react-native';
import ButtonNav from './Button';
class HomeScreen extends React.Component
render()
console.log('Home' + this.props)
return (
<View
style= alignItems: 'center', justifyContent: 'center'>
<View
style=height: 120, alignItems: 'center', justifyContent: 'center'>
<Text>Zone 1</Text>
</View>
<ButtonNav/>
</View>
)
export default HomeScreen;
按钮
//Button
import React from 'react';
import View, Text, Button from 'react-native';
import TouchableOpacity from 'react-native-gesture-handler';
class ButtonNav extends React.Component
render()
console.log(this.props.navigation)
return (
<View
style=height: 120, alignItems: 'center', justifyContent: 'center' >
<TouchableOpacity
onPress=() => this.props.navigation.navigate('Detail')>
<Text>Button</Text>
</TouchableOpacity>
</View>
);
export default ButtonNav;
详细画面
//detail
import React from 'react';
import View, Text from 'react-native';
class Detail extends React.Component
render()
console.log(this.props)
return (
<View
style=flex: 1, alignItems: 'center', justifyContent: 'center' >
<Text>Details Screen</Text>
</View>
)
export default Detail;
【问题讨论】:
【参考方案1】:Button类中没有导航属性,可以这样传递:
<ButtonNav
navigation=this.props.navigation />
或者你可以通过 props 传递事件onPress
:
<ButtonNav
onPress=() => this.props.navigation.navigate('Detail') />
<TouchableOpacity
onPress=this.props.onPress>
<Text>Button</Text>
</TouchableOpacity>
【讨论】:
如果可以,请帮我解决这个问题?谢谢***.com/questions/61606346/…【参考方案2】:所以在 ButtonNav 类中,这个类没有道具。
在你的类中包含这段代码。
constructor(props) super(props);
【讨论】:
如果你只传递道具你不需要构造函数以上是关于无法在 react-navigation 5 上的屏幕之间导航的主要内容,如果未能解决你的问题,请参考以下文章
Redux动作已触发,但无法导航(React-Navigation)
android 上的 react-navigation/native goBack 错误
react-navigation 做导航栏,发现 Android 上的标题不居中
测试套件无法使用 @react-navigation/stack 运行
最新版 react-navigation v5.0 上带有标题按钮的换屏
无法从“App.js”解析“@react-navigation/native”-React Native + 如何解决?