路线应该声明一个屏幕。 [反应本机导航错误]
Route should declare a screen. [ React Native Navigation Error]
您好,我是 React Native 的新手,我遇到了奇怪的路由问题。我做错了,但需要有人指导我。
index.android.js
import { LandingScreen } from './src/components/landing_screen.js'
import HomeScreen from './src/app_component.js'
import { StackNavigator } from 'react-navigation';
const SimpleApp = StackNavigator({
Home: { screen: HomeScreen },
Landing: { screen: LandingScreen},
});
AppRegistry.registerComponent('HomeScreen', () => SimpleApp);
app_component.js
// Other imports ...
export default class HomeScreen extends Component {
static navigationOptions = {
title: 'Home Screen',
};
render() {
const { navigate } = this.props.navigation;
return (
<View style={styles.container}>
<Text style={styles.welcome}>
Welcome to React Native!
</Text>
<Text style={styles.instructions}> Hello CHannoo!!!</Text>
<Text style={styles.instructions}>
To get started, edit index.android.js
</Text>
<Text style={styles.instructions}>
Double tap R on your keyboard to reload,{'\n'}
Shake or press menu button for dev menu
</Text>
<Button
title="Go to 2nd Page"
onPress={() =>
// alert('hello');
navigate('LandingScreen')
// navigate('Home', { name: 'Jane' })
}
/>
</View>
);
}
componentDidMount () {
SplashScreen.close({
animationType: SplashScreen.animationType.scale,
duration: 850,
delay: 500,
})
}
}
landing_screen.js
export default class LandingScreen extends Component {
static navigationOptions = {
title: 'Landing Screen Title',
};
render() {
return (........)
}
如果我们删除路线 Landing,它工作正常。但是当我们添加这条路线时,我们得到了错误。
路由 'Landing' 应该声明一个屏幕。例如......
您的 LandingScreen 已导出为 default
,但您是按名称导入的。
你的导入语句是这样的:
import { LandingScreen } from './src/components/landing_screen.js'
将其替换为下面的行(没有大括号):
import LandingScreen from './src/components/landing_screen.js'
应该可以解决问题。
但是正如@Medet 指出的那样,您可能会收到一个新错误,因为您必须更改此行:
navigate('LandingScreen')
至:
navigate('Landing')
因为你的网名是Landing。
你打电话给navigate('LandingScreen')
但是网名是Landing
+ @Dusk 的回答应该可以解决
您好,我是 React Native 的新手,我遇到了奇怪的路由问题。我做错了,但需要有人指导我。
index.android.js
import { LandingScreen } from './src/components/landing_screen.js'
import HomeScreen from './src/app_component.js'
import { StackNavigator } from 'react-navigation';
const SimpleApp = StackNavigator({
Home: { screen: HomeScreen },
Landing: { screen: LandingScreen},
});
AppRegistry.registerComponent('HomeScreen', () => SimpleApp);
app_component.js
// Other imports ...
export default class HomeScreen extends Component {
static navigationOptions = {
title: 'Home Screen',
};
render() {
const { navigate } = this.props.navigation;
return (
<View style={styles.container}>
<Text style={styles.welcome}>
Welcome to React Native!
</Text>
<Text style={styles.instructions}> Hello CHannoo!!!</Text>
<Text style={styles.instructions}>
To get started, edit index.android.js
</Text>
<Text style={styles.instructions}>
Double tap R on your keyboard to reload,{'\n'}
Shake or press menu button for dev menu
</Text>
<Button
title="Go to 2nd Page"
onPress={() =>
// alert('hello');
navigate('LandingScreen')
// navigate('Home', { name: 'Jane' })
}
/>
</View>
);
}
componentDidMount () {
SplashScreen.close({
animationType: SplashScreen.animationType.scale,
duration: 850,
delay: 500,
})
}
}
landing_screen.js
export default class LandingScreen extends Component {
static navigationOptions = {
title: 'Landing Screen Title',
};
render() {
return (........)
}
如果我们删除路线 Landing,它工作正常。但是当我们添加这条路线时,我们得到了错误。
路由 'Landing' 应该声明一个屏幕。例如......
您的 LandingScreen 已导出为 default
,但您是按名称导入的。
你的导入语句是这样的:
import { LandingScreen } from './src/components/landing_screen.js'
将其替换为下面的行(没有大括号):
import LandingScreen from './src/components/landing_screen.js'
应该可以解决问题。
但是正如@Medet 指出的那样,您可能会收到一个新错误,因为您必须更改此行:
navigate('LandingScreen')
至:
navigate('Landing')
因为你的网名是Landing。
你打电话给navigate('LandingScreen')
但是网名是Landing
+ @Dusk 的回答应该可以解决