我试图使用 StackNavigator 进行导航,当我使用它从一个屏幕转到另一个屏幕时它可以工作,如此处所述。但是当我尝试让一个子组件通过自身导航时,导航似乎不起作用,我找不到任何解决方案。
正如下面的代码中给出的,我正在尝试使用测试组件,其中有一个可以单击以从 HomeScreen 移动到 ChatScreen 的按钮。
我很确定解决方案是基本的,但我真的无法在任何地方找到它。
这是我的代码:
import React from 'react';
import {
AppRegistry,
Text,
View,
Button
} from 'react-native';
import { StackNavigator } from 'react-navigation';
class HomeScreen extends React.Component {
static navigationOptions = {
title: 'Welcome',
};
render() {
const { navigate } = this.props.navigation;
let userName = 'Ketan';
return (
<View>
<Text>Hello, Chat App!</Text>
<Button
onPress={() => navigate('Chat', { user: userName })}
title={"Chat with " + userName}
/>
<Test />
</View>
);
}
}
class ChatScreen extends React.Component {
static navigationOptions = ({ navigation }) => ({
title: `Chat with ${navigation.state.params.user}`,
});
render() {
const { params } = this.props.navigation.state;
return (
<View>
<Text>Chat with {params.user}</Text>
</View>
);
}
}
class Test extends React.Component {
render() {
const { navigate } = this.props.navigation;
return (
<View>
<Button
onPress={() => navigate('Chat', { user: 'TestBot' })}
title={'This is a test'}
/>
</View>
)
}
}
const NavApp = StackNavigator({
Home: { screen: HomeScreen },
Chat: { screen: ChatScreen },
});
AppRegistry.registerComponent('NavApp', () => NavApp);
这是我得到的错误:
这是要测试的演示:https ://snack.expo.io/HyaT8qYob
我希望我的问题足够清楚我的意思。