如何在NUXT 3中渲染SVG图标

发布于 2025-01-31 07:29:52 字数 1227 浏览 0 评论 0原文

我正在使用NUXT 3和组成API。

我得到了这样的筑巢,如何摆脱额外的SVG标签? 我也想尽可能地接收SVG属性并更改,例如,填充

模板

<template>
  <div>
    <component :is="render"></component>
  </div>
</template>

脚本

import { h } from "vue";

const { data, pending, error, refresh } = await useFetch(svgURL);

const getDataVal = data.value
const SvgToRaw = await getDataVal.text();

const render = () => {
  return h("svg", {
    class: "bar",
    innerHTML: SvgToRaw,
  });
};

chrome noreferrer“> chrome dev工具

我试图创建一个虚拟DOM树并从那里获得HTML元素,而不是文本,但我认为这是一个不好的解决方案

import hv from "virtual-dom/h";
import diff from "virtual-dom/diff";
import patch from "virtual-dom/patch";
import createElement from "virtual-dom/create-element";

const betaRender = hv("span", { innerHTML: svgString });
var rootNode = createElement(betaRender);
var patches = diff(rootNode);
return patches[0].vNode.innerHTML

SSR支持对我很重要,因此我无法使用标准工具

I am using nuxt 3 and Compositions API.

I get such a nesting, how to get rid of the extra svg tag?
I would also like to receive svg attributes whenever possible and change, for example, fill

template

<template>
  <div>
    <component :is="render"></component>
  </div>
</template>

Script

import { h } from "vue";

const { data, pending, error, refresh } = await useFetch(svgURL);

const getDataVal = data.value
const SvgToRaw = await getDataVal.text();

const render = () => {
  return h("svg", {
    class: "bar",
    innerHTML: SvgToRaw,
  });
};

Chrome Dev Tools

I tried to create a virtual DOM tree and get an HTML element from there, not text, but I think this is a bad solution

import hv from "virtual-dom/h";
import diff from "virtual-dom/diff";
import patch from "virtual-dom/patch";
import createElement from "virtual-dom/create-element";

const betaRender = hv("span", { innerHTML: svgString });
var rootNode = createElement(betaRender);
var patches = diff(rootNode);
return patches[0].vNode.innerHTML

SSR support is important to me so I can't use standard tools

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文