类型错误:undefined不是对象(评估'style.width')

TyF*_*ude 5 react-native

我想把汽车图像放在背景图像上,就是这样.

import React, { Component } from 'react';
import {
...
  Animated,
  ImageBackground
} from 'react-native';


export default class App extends Component {
  render() {
    return (
      <ImageBackground imageStyle={styles.container} source={require('./src/assets/img/road1.jpg')}>
       <Animated.Image style={styles.car} source={require('./src/assets/img/car2.png')}>
       </Animated.Image>
      </ImageBackground>
    );
  }
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    position: 'relative',
    resizeMode: 'cover'
  },
  car:{
    position:'absolute',
    width:100,
    height:50
  }
});
Run Code Online (Sandbox Code Playgroud)

当我运行此代码时,这是错误屏幕; 在此输入图像描述 实际上信息是清楚的;

Type error:undefined is not an object(evaluating 'style.width')
Run Code Online (Sandbox Code Playgroud)

好吧,但为什么它需要'style.width'甚至我使用resizeMode:'cover' 我还在样式对象中设置width和heigth属性仍然是相同的错误..我该如何解决这个问题?

Man*_*kar 14

您的错误来自ImageBackground.js.

Your_Error

您正在为ImageBackground提供容器样式作为prop,它需要在那里存在宽度.

您通过无效道具提供风格imageStyle.它应该作为.提供style

尝试:

<ImageBackground style={styles.container} source={require('./src/assets/img/road1.jpg')}>
       <Animated.Image style={styles.car} source={require('./src/assets/img/car2.png')}>
       </Animated.Image>
</ImageBackground>
Run Code Online (Sandbox Code Playgroud)