我的富文本编辑器的输出是纯html.我使用div元素上的dangerouslySetInnerHtml来呈现它.然而,我的普通html在交互性方面相当有限.假设我有一个这样的 node

<a href="/users/userA"/ id="userA">

这是一个指向用户页面的简单链接.然而,我想要添加悬停卡功能到它.我有我的定制Reaction组件UserLink,它使用像RadixUI这样的外部库来实现这个悬停卡.在初始呈现后,有没有可能用我的定制组件替换这个简单的a标记?或者,还有什么方法可以做到这一点?

推荐答案

您可以使用诸如reaction-html-parser这样的库,它可以将一个HTML字符串转换为Reaction组件.它还允许用Reaction组件替换指定的元素.

下面是一个使用action-html-parser的示例:

import ReactHtmlParser, { convertNodeToElement } from 'react-html-parser';

function transform(node, index) {
  if (node.type === 'tag' && node.name === 'a') {
    return <UserLink key={index} href={node.attribs.href}>{node.children[0].data}</UserLink>;
  }
}

function MyComponent({ html }) {
  return <div>{ReactHtmlParser(html, { transform })}</div>;
}

在Transform函数中,带有href /users/userA<a>标记将转换为<UserLink href="/users/userA">.

这样,您就可以用您自己的定制Reaction组件替换您的HTML字符串中的某些标记.UserLink组件可以根据您的要求进行定义,包括悬停功能或任何其他自定义行为.

Javascript相关问答推荐

如何最好地从TypScript中的enum获取值

zoom svg以适应圆

Angular中计算信号和getter的区别

如何解决chrome—extension代码中的错误,它会实时覆盖google—meet的面部图像?'

如何找出摆线表面上y与x相交的地方?

PrivateRoute不是路由组件错误

如何粗体匹配的字母时输入搜索框使用javascript?

无法使用单击按钮时的useState将数据从一个页面传递到另一个页面

用JS从平面文件构建树形 struct 的JSON

如何在Angular拖放组件中同步数组?

创建以键值对为有效负载的Redux Reducer时,基于键的类型检测

如何在 Select 文本时停止Click事件?

Reaction Redux&Quot;在派单错误中检测到状态Mutations

在不删除代码的情况下禁用Java弹出功能WordPress

如何在Press上重新启动EXPO-AV视频?

是否可以将异步调用与useState(UnctionName)一起使用

将Singleton实例设置为未定义后的Angular 变量引用持久性行为

将延迟加载的模块转换为Eager 加载的模块

如何处理不带参数的redux thunk payloadCreator回调函数?

如何在预览中显示html+css与数据URL?