【发布时间】:2021-08-26 22:59:50
【问题描述】:
我刚刚制作了这个组件以避免在 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 上呈现,只是注意到了。
【问题讨论】:
-
在 iOS 上,每个浏览器都是 webkit,也就是说,在渲染内容方面,它们都与 Safari 完全相同。
-
你是不是暗示不能在 webkit 上渲染运行时 SVG?我确信 webkit 确实会在运行时显示加载/导入的 SVG。
-
不,我是在回答你说你在 iOS 上尝试过 Safari 和 Chrome 的部分问题,告诉你一定会得到相同的结果。
-
欣赏它 :D 实际上并不知道 :D 顺便说一句,我用 SVG 解决了这个问题,你可以在下面看到我自己的答案。谢谢。