我有一个由WYSIWYG编辑器输入提供的字符串,例如:
const originalString = "<div>一些文本</div><strong>一些加粗文本 {{response}}</strong>";
我需要用一些JSX替换{{response}},并将结果输出为HTML。
我认为我不能使用dangerouslySetInnerHTML,因为它不处理JSX。相反,你会得到以下输出:
<div>一些文本</div> <strong>一些加粗文本 [object Object]</strong>
在这里查看示例。
有没有一种方法可以用JSX替换{{response}},然后在渲染时将字符串的其余部分转换为有效的HTML?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
这是你想要的吗?
import React, {renderToString} from "react"; import "./style.css"; import * as ReactDOMServer from 'react-dom/server'; export default function App() { return ( <StringReplacement /> ); } class StringReplacement extends React.Component { render() { //这可以是从所见即所得编辑器中作为字符串的任何有效的HTML const originalString = "<div>some text</div><strong>some strong text {{response}}</strong>"; // 用JSX内容替换'{{response}}' const jsxReplacement = <span onClick={ () => alert('')}>JSX content here</span>; const replacedString = originalString.replace('{{response}}', ReactDOMServer.renderToString(jsxReplacement)); return ( <div> <div dangerouslySetInnerHTML={{ __html: replacedString }} /> </div> ); } } export default StringReplacement;