繁体   English   中英

ReactJS 取数据 html 数据处理

[英]ReactJS fetched html data manupilation

我有一个 mongodb 数据库,我在其中保存了原始 html。 我在 html 中创建了一个名为 kk-id 的自定义属性,以提及 html 中的对象。 我想用锚标签替换那个特定的 html 标签。

我想出了一种使用香草 javascript的方法,但是我想知道是否有更有效的reactjs方法来做到这一点。

数据示例

<p>Hello <span kk-id="123">John Doe</span></p>

John Doe 的 id 是123保存在其中。

/// react component
import React, { useEffect, useState } from "react";

export default function TestComponent() {
  const [html, setHtml] = useState(
    `<p>Hello <span kk-id="123">John Doe</span><br /></p>`
  );

  useEffect(() => {
    const span = document.querySelector(`[kk-id]`);
    if (span) {
      const a = document.createElement("a");
      a.href = "/people/john-doe";
      a.innerText = span.innerText;
      span.parentNode.replaceChild(a, span);
    }
  }, [html]);

  return <div dangerouslySetInnerHTML={{ __html: html }} />;
}

我希望 vanilla js 是最简单的方法。 出于增强目的,您可以看到这个 它将更具可读性和可重用性。

您可以使用html-react-parser并执行

import parse from "html-react-parser";
...

const newParsedHtml = parse(html, {
    replace: ({attribs}) => {
        if (domNode.attribs && domNode.attribs.id === "123") {
            return <span>dynamic text here</span>
        }
    }
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM