ios - 自定义 React SVG 组件不在 iOS 上呈现,在桌面上呈现正常
问题描述
我刚刚制作了这个组件以避免在 React.js 中加载 SVG 图像,在这种情况下我想绘制自己的 SVG 按钮。不幸的是,我编写的组件在 Mac 或 PC 桌面上工作得很好(它呈现一个蓝色矩形),但在 iPhone 或 iPad 上却不行(试过 Safari 和 Chrome,在 iOS 上没有运气)。你能帮我吗?这是我正在测试的组件:
import React from 'react'
const Svg = (props) => {
return(
<svg
viewBox = {`0 0 ${props.width} ${props.height}`}
>
<defs>
<path
id = 'path-main'
d = {`
M 0, 0
L ${props.width}, 0
L ${props.width}, ${props.height}
L 0, ${props.height}
L 0, 0 z
`}
/>
</defs>
<g>
<use
stroke = 'blue'
strokeWidth = '2'
fill = 'blue'
xlinkHref = '#path-main'
/>
</g>
</svg>
)
}
export default Svg
这应该很简单,因为我还没有对它做任何特别的事情,我只是确保它可以跨设备和响应式地工作,但是很可惜,它没有。你知道我在这里想念什么吗?iOS不支持在运行时绘制的SVG吗?
顺便说一句,组件就是这样被调用的(很明显但仍然如此):
<Svg
width = '300px'
height = '50px'
/>
谢谢
Edit1:作为记录,它也不会在 Mac Desktop Safari 上呈现,只是注意到了。
解决方案
因此,显然我在 svg 标记中编写的代码不够健壮,无法在所有浏览器上运行。我在 Sketch 中制作了一个新的简单 SVG 只是为了测试它,这个在所有浏览器中都正确显示。这将是我现在在所有浏览器中工作的测试组件:
import React from 'react'
const Svg = (props) => {
return(
<svg
width = {props.width}
height = {props.height}
viewBox = {`0 0 ${props.width} ${props.height}`}
>
<g
fill = '#B91799'
fillRule = 'evenodd'
>
<path
d = {`
M 0, 0
L ${props.width}, 0
L ${props.width}, ${props.height}
L 0, ${props.height}
L 0, 0 z
`}
/>
</g>
</svg>
)
}
export default Svg
编辑:正如罗伯特在下面提到的,请注意第一次尝试的问题是 svg 元素上缺少属性宽度和高度。
推荐阅读
- javascript - 运行良好,但突然显示错误。例外:一天内服务调用次数过多:urlfetch
- regex - 正则表达式捕获中间网址
- angular - 如何将@angular/fire 添加到 Nx 工作区(Angular 项目)?
- c# - C# 最佳实践 (LINQ) 检查字符串列表/数组中的字符串
- digital-ocean - 数字海滴
- javascript - 如何将excel文件(exceljs)上传到s3
- flutter - 使用 Flutter with IOS 接收共享文件意图
- javascript - 分页逻辑 - Vue
- javascript - 在 Node js 中不使用 Buffer 的情况下将字符串转换为 base64 的替代方法
- json - 我无法使用 Swift JSON 打印到 TableView 数据