超全模态模型 × Harness 升级,升级解锁 ArkClaw,最新支持 DeepSeek-V4 系列与 GLM-5.1
在React+TypeScript环境中,参考ObservableHQ的D3-DAG Sugiyama代码改造后生成SVG元素。手动粘贴XMLSerializer序列化得到的SVG字符串到代码中可正常显示,但使用<object>标签传入该SVG元素时,无编译/运行报错却无法显示;程序化使用序列化字符串渲染也失败。
<object>
export const DrawGraph = ()=>{ const nodeRadius = 20; // ... 省略D3-DAG绘制逻辑 .attr("alignmentBaseline", "middle") .attr("fill", "white"); return svgNode; }
export default class App extends React.Component { Image = DrawGraph() render(){ return ( <object data={this.Image} type="image/svg+xml"/> ) } }
<object>的data属性仅接受URL或Data URI,不能直接传入SVG DOM节点。需要将SVG节点序列化为字符串后,转换为合法的Data URI:
data
XMLSerializer
data:image/svg+xml;utf8,${编码后的字符串}
直接在类组件属性中调用DrawGraph会导致SVG节点脱离React的渲染控制,建议在组件挂载后生成并处理SVG:
DrawGraph
export default class App extends React.Component { svgDataUri: string | null = null; componentDidMount() { const svgNode = DrawGraph(); const serializer = new XMLSerializer(); const svgString = serializer.serializeToString(svgNode); // 生成合法的Data URI this.svgDataUri = `data:image/svg+xml;utf8,${encodeURIComponent(svgString)}`; this.forceUpdate(); } render() { return this.svgDataUri ? ( <object data={this.svgDataUri} type="image/svg+xml" /> ) : null; } }
import { useEffect, useState } from 'react'; export default function App() { const [svgDataUri, setSvgDataUri] = useState<string | null>(null); useEffect(() => { const svgNode = DrawGraph(); const serializer = new XMLSerializer(); const svgString = serializer.serializeToString(svgNode); setSvgDataUri(`data:image/svg+xml;utf8,${encodeURIComponent(svgString)}`); }, []); return svgDataUri ? ( <object data={svgDataUri} type="image/svg+xml" /> ) : null; }
如果SVG中引用了外部资源(如字体、外部图片),Data URI方式的<object>可能无法加载这些资源。需要确保SVG是完全自包含的,将外部资源内联(比如用base64编码图片)。
内容的提问来源于stack exchange,提问作者Kelemen
超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起
模型再升级,30秒超长叙事, 模态参考扩容
模型自由,工具不限,最新支持 Deepseek-V4 系列、GLM-5.3 系列
超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列
大模型19元起,Al应用9.9元畅享,新人首购爆款尽享优惠