VS Code中Expo项目运行时屏幕无法加载显示本地图片
问题根源
图片显示空白和导入逻辑无关,是布局约束缺失导致的:
- 根节点
<View>没有绑定你已经定义的container样式,整个页面没有合法的flex布局上下文,子元素设置的flex值完全不生效 - React Native的Image组件如果没有拿到明确的宽高约束,不会触发本地图片渲染,你当前给Image设置的
flex:10在父容器无布局规则的情况下等于无效尺寸,因此只留空白区域 - 额外隐患:文件名大小写不匹配、assets目录层级错误也会触发同类空白问题,需要同步排查
修复方案
- 第一步:给最外层View绑定container样式,建立正确的布局上下文
将代码中的<View>替换为<View style={styles.container}> - 第二步:修改Image对应的样式,补充明确的宽高属性和适配规则,不要仅靠flex值控制图片尺寸,参考写法:
callText: { width: 200, // 按你的设计需求调整实际宽度 height: 200, // 按你的设计需求调整实际高度 resizeMode: 'contain' // 保证图片按原比例缩放,不会被裁切变形 }
- 第三步:排查静态资源配置
- 确认
assets文件夹和App.js文件处于同一目录层级 - 确认图片文件名
logo1.png的大小写和代码中引用完全一致(移动端环境对文件名大小写敏感,大小写不匹配会直接加载失败)
- 确认
修复后可运行的完整代码
import { StatusBar } from 'expo-status-bar' import { StyleSheet, Text, View, Image, Button } from 'react-native'; export default function App() { return ( <View style={styles.container}> <Image source={require('./assets/logo1.png')} style={styles.callText} /> <Text style={styles.ligmaText}>Viral</Text> <Text style={styles.fontText}>Forgot Password?</Text> <Text style={styles.baseText}>Don't have an account? <Button title="Register Now"></Button></Text> <Text>Google</Text> <Text>Facebook</Text> <StatusBar style="auto" /> </View> ); } const styles = StyleSheet.create({ container: { flex: 1, backgroundColor: '#fff', alignItems: 'center', justifyContent: 'center', }, baseText: { marginTop: 0, }, fontText: { marginTop: 50, textAlign: 'right', }, ligmaText: { fontSize: 22, }, callText: { width: 200, height: 200, resizeMode: 'contain' } });
额外提示:Text组件仅支持嵌套文本类子节点,直接在Text里嵌Button会在部分平台触发布局异常,如果需要实现行内跳转按钮,建议用TouchableOpacity包裹自定义文本实现。
内容的提问来源于stack exchange,提问作者sean froelich
相关产品推荐
相关产品推荐

