Javascript 不变冲突:元素类型无效:应为字符串或类/函数
我有一个世博会应用程序,应该像一个“相机”一样工作。我试过很多解决办法,但似乎都不管用 错误为:“不变冲突:元素类型无效。” 字符串(用于内置组件)或类/函数(用于复合 元素),但得到了对象。请检查“CameraPage”的渲染方法 App.jsJavascript 不变冲突:元素类型无效:应为字符串或类/函数,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 {
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');为房地产赋予正确的价值你可以发布世博会点心吗?啊,我的错误。谢谢如果我的回答对你有帮助,你可以接受或投票。请感谢贡献者的工作:)