TypeError:未定义不是一个对象(评估'asset.scales')
2019-10-11
2711
我对 React Native 还很陌生,但我正在尝试使用
ImageBackground
组件添加 png 作为背景图像。我的项目目录中的“assets”文件夹中有 png。当我在 iPhone 上使用 Expo 运行应用程序时,我收到此错误:
TypeError:undefined 不是对象(评估“asset.scales”)
这是我的代码:
import React, {useState, Component} from 'react';
import {StyleSheet, Text, View, TextInput, TouchableOpacity, Image} from 'react-native';
import * as Font from "expo-font";
import {ImageBackground} from "react-native-web";
class LoginPage extends Component {
state = {
fontLoaded: false,
};
async componentDidMount() {
await Font.loadAsync({
'Veles-Regular' : require("./assets/fonts/Veles-Regular.otf"),
});
console.log('HI');
this.setState({fontLoaded: true});
}
render() {
return (
<ImageBackground source={require('./assets/login_splash.png')} style={{width: 100, height: 100}}>
<View style={styles.loginScreen}>
<View style={{flex: 1, justifyContent: 'center'}}>
{
this.state.fontLoaded ? (
<Text style={{fontSize: 60, color: 'white', fontFamily: 'Veles-Regular'}}>App Name</Text>
) : null
}
</View>
<View style={{flex: 1, justifyContent: 'center', alignItems: 'center', width: '85%'}}>
<TextInput style={[styles.loginInput, {marginBottom: 5}]} placeholder=' username'
placeholderTextColor={'rgba(255,255,255,0.3)'} textAlign='center'/>
<TextInput style={[styles.loginInput, {marginTop: 5, marginBottom: 5}]} placeholder=' password'
placeholderTextColor={'rgba(255,255,255,0.3)'} textAlign='center'/>
<View style={{height: 15}}/>
<TouchableOpacity onPress={() => {
}}>
<Text style={{color: 'white', fontWeight: 'bold', fontSize: 24}}>Log in</Text>
</TouchableOpacity>
</View>
<View style={{flex: 2, justifyContent: 'center'}}>
<View style={{flex: 9}}/>
<Text style={{flex: 1, fontSize: 24, color: 'white', textAlign: 'center'}}>Don't have an
account?</Text>
<TouchableOpacity style={{color: 'white', fontWeight: 'bold', fontSize: 24}}>
<Text style={{color: 'white', fontWeight: 'bold', fontSize: 24, textAlign: 'center'}}>Sign
Up</Text>
</TouchableOpacity>
<View style={{height: 30}}/>
</View>
</View>
</ImageBackground>
);
}
}
const styles = StyleSheet.create({
loginScreen: {
flex: 1,
paddingTop: 50,
alignItems: 'center',
justifyContent: 'center',
},
loginInput: {
width: '100%',
backgroundColor: 'rgb(40,40,40)',
height: 44,
fontSize: 24,
color: 'white',
borderWidth: 1,
borderColor: 'rgb(60,60,60)',
borderRadius: 25
},
});
export default LoginPage;
3个回答
我遇到了类似的问题,使用“Image”组件时也出现了类似的错误“TypeError:undefined 不是对象(评估‘asset.scales’)”。 这个问题的解决方案非常简单,只需将:
import {ImageBackground} from "react-native-web";
更改为:
import React, {useState, Component, ImageBackground} from 'react';
看起来我们导入了错误的包中的组件 :)
Panicum
2019-10-25
最好使用下面的代码
import {ImageBackground} from "react-native";
只需从导入行中删除 -web
Vahid Afshari
2021-12-20
我还通过使用“react-native”中的“ImageBackground”解决了该问题。
我只使用“return”进行渲染。
Tim Bretschneider
2022-08-08