使用React-Native-svg的SVG Pattern作背景时运行官方示例出现白屏
问题原因
你当前代码的核心问题是<Defs>标签内定义的Pattern仅为可复用的配置项,本身不会直接渲染到视图上,你没有使用该Pattern填充任何可见的SVG图形元素,导致整个SVG无可见渲染内容,因此出现白屏。
问题排查方法
- 检查Pattern引用逻辑:所有在
<Defs>中定义的资源,必须通过fill="url(#PatternID)"或stroke="url(#PatternID)"的形式绑定到可见的SVG元素(如Rect、Circle、自定义Path等)上才会生效 - 检查尺寸配置:确认Pattern的width、height、viewBox属性和引用它的图形尺寸匹配,避免图案被缩放至不可见
- 检查容器样式:确认Svg组件及其父容器的宽高为有效值,没有被样式压缩为0
修复后的完整代码
<View style={{ paddingTop: 20, height: '100%', flex: 1, backgroundColor: 'white' }}> <Svg width="100%" height="100%" viewBox="0 0 800 400"> <Defs> <Pattern id="TrianglePattern" patternUnits="userSpaceOnUse" x="0" y="0" width="100" height="100" viewBox="0 0 10 10"> <Path d="M 0 0 L 7 0 L 3.5 7 z" fill="red" stroke="blue" /> </Pattern> </Defs> {/* 新增一个铺满整个SVG画布的矩形,用定义好的Pattern填充 */} <Rect x="0" y="0" width="800" height="400" fill="url(#TrianglePattern)" /> </Svg> </View>
补充说明
如果需要调整图案的疏密程度,修改Pattern的width和height属性即可,数值越小图案越密集,数值越大图案越稀疏。
内容的提问来源于stack exchange,提问作者four-eyes
相关产品推荐
相关产品推荐

