Javascript 不变冲突:元素类型无效:应为字符串或类/函数

Javascript 不变冲突:元素类型无效:应为字符串或类/函数,javascript,react-native,expo,Javascript,React Native,Expo,我有一个世博会应用程序,应该像一个“相机”一样工作。我试过很多解决办法,但似乎都不管用 错误为:“不变冲突:元素类型无效。” 字符串(用于内置组件)或类/函数(用于复合 元素),但得到了对象。请检查“CameraPage”的渲染方法 App.js import React from 'react'; import CameraPage from './src/camera.page'; export default class App extends React.Component {

我有一个世博会应用程序,应该像一个“相机”一样工作。我试过很多解决办法,但似乎都不管用

错误为:“不变冲突:元素类型无效。” 字符串(用于内置组件)或类/函数(用于复合 元素),但得到了对象。请检查“CameraPage”的渲染方法

App.js

import React from 'react';

import CameraPage from './src/camera.page';

export default class App extends React.Component {
    render() {
        return (
            <CameraPage />
        );
    };
};

从“React”导入React;
从“./src/camera.page”导入CameraPage;
导出默认类App扩展React.Component{
render(){
返回(
);
};
};
camera.page.js

import React from 'react';
import { View, Text } from 'react-native';
import * as Camera from 'expo-camera';
import * as Permissions from 'expo-permissions'

import styles from './styles';

export default class CameraPage extends React.Component {
    camera = null;

    state = {
        hasCameraPermission: null,
    };

    async componentDidMount() {
        const camera = await Permissions.askAsync(Permissions.CAMERA);
        const audio = await Permissions.askAsync(Permissions.AUDIO_RECORDING);
        const hasCameraPermission = (camera.status === 'granted' && audio.status === 'granted');

        this.setState({ hasCameraPermission });
    };

    render() {
        const { hasCameraPermission } = this.state;

        if (hasCameraPermission === null) {
            return <View />;
        } else if (hasCameraPermission === false) {
            return <Text>Access to camera has been denied.</Text>;
        }

        return (
            <View>
                <Camera
                    style={styles.preview}
                    ref={camera => this.camera = camera}
                />
            </View>
        );
    };
};

从“React”导入React;
从“react native”导入{View,Text};
从“expo Camera”导入*作为摄像头;
从“expo权限”导入*作为权限
从“./styles”导入样式;
导出默认类CameraPage扩展React.Component{
摄像机=零;
状态={
hasCameraPermission:null,
};
异步组件didmount(){
const-camera=wait-Permissions.askAsync(Permissions.camera);
const audio=wait Permissions.askAsync(Permissions.audio_RECORDING);
const hasCameraPermission=(camera.status==“已授予”和&audio.status==“已授予”);
this.setState({hasCameraPermission});
};
render(){
const{hasCameraPermission}=this.state;
if(hasCameraPermission===null){
返回;
}else if(hasCameraPermission===false){
对摄影机的返回访问已被拒绝。;
}
返回(
this.camera=camera}
/>
);
};
};

您以错误的方式导入了
摄像头
组件。正确的方法是:

import { Camera } from 'expo-camera';

请检查文档并查看

请改进hasPermission属性,例如const hasCameraPermission=(camera.status=='prograted'&&audio.status==='prograted'?'hasPermission':'noPermission');为房地产赋予正确的价值你可以发布世博会点心吗?啊,我的错误。谢谢如果我的回答对你有帮助,你可以接受或投票。请感谢贡献者的工作:)