StackNavigator的问题:路线' X'应该宣布一个屏幕

时间:2017-03-26 21:32:54

标签: javascript reactjs react-native react-router

具体错误是"路线'相机'应该声明一个屏幕"。

我有index.js导入Camera.js并渲染相机组件。 Camera.js导入router.js,导入我的所有屏幕并创建StackNavigator。我是React的新手,所以可能是我不理解的东西。这是代码......

Index.js

import React, { Component } from 'react';
import { CameraView } from './screens/Camera'

class App extends Component {
  render() {
    return <CameraView />;
  }
}

export default App;

Camera.js

import React, { Component } from 'react';
import {
  AppRegistry,
  StyleSheet,
  Text,
  View,
  Button,
} from 'react-native';
import { AppStack } from '../config/router';

....

export default class CameraView extends Component {
    viewProducts = () => {
        this.props.navigation.navigate('Products');
    };
    render() {
        const { navigate } = navigation;
        return (
           <View style={styles.container}>
           <Camera 
             ref={(cam) => {
               this.camera = cam;
             }}
             style={styles.preview}
             aspect={Camera.constants.Aspect.fill}
             onBarCodeRead={this.readBarcode}>
             <Button
               onPress={() => this.viewProducts}
               title="Products"
             />
          </Camera>
        </View>
      );
   }
}

Router.js

import React from 'react';
import { StackNavigator } from 'react-navigation';
import { Icon } from 'react-native-elements';

import Products from '../screens/Products';
import ProductDetail from '../screens/ProductDetail';
import CameraView from '../screens/Camera';

export const Root = StackNavigator({
  Camera: {
    screen: CameraView,
  },
  ProductDetail: {
    screen: ProductDetail,
    navigationOptions: {
      title: ({ state }) => `${state.params.name}}`
    },
  },
  Products: {
    screen: Products,
    navigationOptions: {
      title: 'Products',
    },
  },
});

我在这里导入CameraView并将其用作我的Camera路线的屏幕。 CameraView不被视为屏幕吗?感谢。

1 个答案:

答案 0 :(得分:0)

解决问题。而不是渲染

render() {
    return <CameraView />;
} 

在我的index.js中我需要导入router.js并渲染

render() {
    return <Root />;
}