React Native 功能组件 - 类型无效错误 - 调用视频时需要字符串或类/函数
2022-11-23
127
我之前见过这个问题,但通过 Import / Export 花括号解决它的方法似乎不是根本原因。
我可以尝试将一个功能组件添加到我的页面 React.js 中,该组件将包含从 Expo 导入的视频。它似乎会导致错误,我觉得这与 VideoInstance 中的 Video 类有关,导致错误,但我不确定。
Phase2.js 页面
import React from 'react'
import { View, StyleSheet} from 'react-native'
import { VideoInstance } from '../components/Videos'
export default function Phase2() {
return (
<View style={styles.container}>
<VideoInstance/>
</View>
)
}
const styles = StyleSheet.create(
{
container: {
flex:1,
backgroundColor: 'red',
}
}
)
Video.js Functional Comp(我认为错误在于 Video,因为运行时没有它和 Touchable)
import React from 'react'
import { View, Text, StyleSheet, TouchableWithoutFeedback } from 'react-native'
import Video from 'expo-av'
export const VideoInstance = () => {
const video = React.useRef(null);
const [status, setStatus] = React.useState({})
const onPlayPausePress = () => {
status.isPlaying ? video.current.pauseAsync() : video.current.playAsync()
}
return (
<View>
<TouchableWithoutFeedback onPress={onPlayPausePress}>
<Video
ref={video}
style={styles.video}
source={{uri:"https://d23dyxeqlo5psv.cloudfront.net/big_buck_bunny.mp4"}}
resizeMode='contain'
useNativeControls={false}
isLooping
shouldPlay
onPlaybackStatusUpdate={setStatus}
/>
</TouchableWithoutFeedback>
</View>
)
}
const styles = StyleSheet.create(
{
container: {
flex:1,
backgroundColor: 'red',
},
video: {
flex: 1,
alignSelf: 'stretch'
}
}
)
**完整错误消息: **
Warning: React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite
components) but got: %s.%s%s, undefined, You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.
Check the render method of `VideoInstance`.,
in VideoInstance (created by Phase2)
我希望视频在第 2 阶段页面上呈现。但它不会呈现。我尝试将 VideoInstance 的代码直接放入 Phase2 函数中,并且它可以工作,因此问题一定是出在尝试将其放入的地方,只是不确定是什么……
3个回答
您应该在导出后写入 默认 并检查它
export default const VideoInstance = () => {
// Your code
}
basan nofal
2022-11-24
您可以在代码中更改导入。
const VideoInstance = () => {
// Your code
}
export default VideoInstance;
让我知道它是否有效。谢谢
Stuti Dyer
2022-11-24