reactjs - 在 React 中动态渲染 base64 编码的 SVG
问题描述
我从 API 接收 base64 编码的 SVG,是否有任何方法可以在反应应用程序中呈现解码的 SVG
import React from 'react';
import { useSelector } from 'react-redux';
const userLogo = () => {
const logoSVG = useSelector((store) => store.portfolio.logo))
const [logo, setLogo] = React.useState('');
React.useEffect(() => {
if(logoSVG)
setLogo(atob(logoSVG))
}, [logoSVG])
return(
<> { logo }</>
)
}
但是,在运行上面的代码时,我将 SVG 作为字符串输出而不是呈现值,危险的 setinnerhtml 道具只呈现 html 格式而不是 SVG
解决方案
可以将 text 转换为blob,并将 blob 用作图像元素源
const blob = new Blob([logo], {type: 'image/svg+xml'});
const url = URL.createObjectURL(blob);
return <img src={url} />
推荐阅读
- applescript - 如何使用 applescript 播放主题幻灯片?
- python - TypeError:只有整数标量数组可以转换为标量索引(python)
- networking - Web 服务器在 ServerHello 处挂起,在特定条件下发送截断的 TLS 证书
- javascript - 从 React 中的另一个 js 文件导出函数
- javascript - 将对象元素添加到不可变数组(javascript)
- scala - 如何将 Scala 期货与超时联系起来?
- javascript - 响应式热图
- python - 如何创建两个包含 10 个实例的列表
- node.js - 从数据库中检索单个对象的最佳实践是什么?
- javascript - 本地存储 + 创建上下文