路由 'Home' 应该为我的一个组件声明一个屏幕”,我不知道为什么
Route 'Home' should declare a screen” occuring for one of my components and i dont know why
我看到了一些关于这个问题的 post 我尝试了一些解决方案,但似乎 none 有效。我尝试按照错误消息的建议进行操作,但它并没有真正帮助。
在到达此错误之前,我收到了不同的错误消息。我希望他们中的一些人在这个问题解决后会 return。
这里是App.js
import React from 'react';
import { StackNavigator } from "react-navigation";
import { StyleSheet, Text, View } from 'react-native';
import MyScreen from './MyScreen'
import Story from "./src/Screens/Story";
import Headlines from "./src/Screens/HeadlinesScreen";
import storiesStore from "./src/Store/Stories";
export default class App extends React.Component {
render() {
return (
<View style={{ flex: 1 }}>
<Route />
</View>
)
}
}
export const Route = StackNavigator({
Home: {
screen: MyScreen ,
path: 'home',
navigationOptions: () => ({
title: `Home`
})
},
Story: {
screen: Story,
path: 'home/:story',
navigationOptions: () => ({
title: `Story`
})
}
});
const styles = StyleSheet.create({
container: {
flex: 1
}
});
这里是MyScreen.js
import React from 'react';
import { StackNavigator } from "react-navigation";
import { StyleSheet, Text, View } from 'react-native';
import { navigationOptions } from "./src/Config/Navigation";
import Headlines from "./src/Screens/HeadlinesScreen";
import storiesStore from "./src/Store/Stories";
import Story from "./src/Screens/Story";
export class MyScreen extends React.Component {
static navigationOptions = {
title: "React Native Hacker News",
...navigationOptions
};
navigateToStory = id => {
const { navigate } = this.props.navigation;
navigate("Story", { id });
};
render() {
return (
<View style={styles.container}>
<Headlines
storiesStore={storiesStore}
navigateToStory={this.navigateToStory}
/>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1
}
});
这里是Package.json
{
"name": "hacker-news-0.2",
"version": "0.1.0",
"private": true,
"devDependencies": {
"react-native-scripts": "1.6.0",
"jest-expo": "^22.0.0",
"react-test-renderer": "16.0.0-beta.5",
"babel-eslint": "^7.2.0",
"esformatter": "^0.10.0",
"esformatter-jsx": "^7.4.1",
"eslint": "^3.18.0",
"eslint-plugin-react": "^6.10.3",
"eslint-plugin-react-native": "^2.3.1"
},
"main": "./node_modules/react-native-scripts/build/bin/crna-entry.js",
"scripts": {
"start": "react-native-scripts start",
"eject": "react-native-scripts eject",
"android": "react-native-scripts android",
"ios": "react-native-scripts ios",
"test": "node node_modules/jest/bin/jest.js --watch"
},
"jest": {
"preset": "jest-expo"
},
"dependencies": {
"axios": "^0.16.1",
"expo": "^22.0.0",
"he": "^1.1.1",
"mobx": "^3.1.9",
"mobx-react": "^4.1.8",
"react": "16.0.0-beta.5",
"react-native": "^0.48.4",
"react-native-navbar": "^1.7.1",
"react-navigation": "^1.0.0-beta.16"
}
}
错误信息
Click to See the Picture
我猜是因为你没有正确导入你的组件。
在 App.js 尝试:
import {MyScreen} from './MyScreen'
或在MyScreen.js中尝试:
export default class MyScreen extends React.Component {
我看到了一些关于这个问题的 post 我尝试了一些解决方案,但似乎 none 有效。我尝试按照错误消息的建议进行操作,但它并没有真正帮助。
在到达此错误之前,我收到了不同的错误消息。我希望他们中的一些人在这个问题解决后会 return。
这里是App.js
import React from 'react';
import { StackNavigator } from "react-navigation";
import { StyleSheet, Text, View } from 'react-native';
import MyScreen from './MyScreen'
import Story from "./src/Screens/Story";
import Headlines from "./src/Screens/HeadlinesScreen";
import storiesStore from "./src/Store/Stories";
export default class App extends React.Component {
render() {
return (
<View style={{ flex: 1 }}>
<Route />
</View>
)
}
}
export const Route = StackNavigator({
Home: {
screen: MyScreen ,
path: 'home',
navigationOptions: () => ({
title: `Home`
})
},
Story: {
screen: Story,
path: 'home/:story',
navigationOptions: () => ({
title: `Story`
})
}
});
const styles = StyleSheet.create({
container: {
flex: 1
}
});
这里是MyScreen.js
import React from 'react';
import { StackNavigator } from "react-navigation";
import { StyleSheet, Text, View } from 'react-native';
import { navigationOptions } from "./src/Config/Navigation";
import Headlines from "./src/Screens/HeadlinesScreen";
import storiesStore from "./src/Store/Stories";
import Story from "./src/Screens/Story";
export class MyScreen extends React.Component {
static navigationOptions = {
title: "React Native Hacker News",
...navigationOptions
};
navigateToStory = id => {
const { navigate } = this.props.navigation;
navigate("Story", { id });
};
render() {
return (
<View style={styles.container}>
<Headlines
storiesStore={storiesStore}
navigateToStory={this.navigateToStory}
/>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1
}
});
这里是Package.json
{
"name": "hacker-news-0.2",
"version": "0.1.0",
"private": true,
"devDependencies": {
"react-native-scripts": "1.6.0",
"jest-expo": "^22.0.0",
"react-test-renderer": "16.0.0-beta.5",
"babel-eslint": "^7.2.0",
"esformatter": "^0.10.0",
"esformatter-jsx": "^7.4.1",
"eslint": "^3.18.0",
"eslint-plugin-react": "^6.10.3",
"eslint-plugin-react-native": "^2.3.1"
},
"main": "./node_modules/react-native-scripts/build/bin/crna-entry.js",
"scripts": {
"start": "react-native-scripts start",
"eject": "react-native-scripts eject",
"android": "react-native-scripts android",
"ios": "react-native-scripts ios",
"test": "node node_modules/jest/bin/jest.js --watch"
},
"jest": {
"preset": "jest-expo"
},
"dependencies": {
"axios": "^0.16.1",
"expo": "^22.0.0",
"he": "^1.1.1",
"mobx": "^3.1.9",
"mobx-react": "^4.1.8",
"react": "16.0.0-beta.5",
"react-native": "^0.48.4",
"react-native-navbar": "^1.7.1",
"react-navigation": "^1.0.0-beta.16"
}
}
错误信息 Click to See the Picture
我猜是因为你没有正确导入你的组件。
在 App.js 尝试:
import {MyScreen} from './MyScreen'
或在MyScreen.js中尝试:
export default class MyScreen extends React.Component {