当你在进行API调用后从open AI获得响应时,它会返回一个JSON字符串化的响应,当你在React组件中渲染它时,它的格式不正确。例如:如果响应包含编号列表,项目符号或星号列表,它们不会中断或创建新行。例如,它也不会检测到新段落。如果有一个URL,它不能点击,也不能缩短,响应只是按原样呈现。顺便说一下,我在react聊天容器中呈现响应,我试图避免使用危险的内部html。有没有其他的方法来正确格式化JSON响应?或者有没有类似的包来做这个?尝试了危险的内部html,但这是有风险的。
j8ag8udp1#
如果你的JSON响应包含类似HTML的元素(例如,编号列表,项目符号,URL),并且你想将它们呈现为React元素,你可能需要在将JSON数据传递给react-json-view之前对其进行预处理。你可以使用像react-html-parser这样的库将HTML字符串转换为React元素:
react-json-view
react-html-parser
npm install react-html-parser
字符串或
yarn add react-html-parser
型然后,您可以在组件中使用它:
import React from 'react'; import ReactHtmlParser from 'react-html-parser'; import ReactJson from 'react-json-view'; const MyComponent = ({ jsonResponse }) => { // Convert HTML-like elements in the JSON response to React elements const processedResponse = ReactHtmlParser(jsonResponse); return ( <div> <ReactJson src={processedResponse} theme="monokai" /> </div> ); }; export default MyComponent;
型
qyyhg6bp2#
我们不应该在ReactJS中使用“危险的内部html”,查看此链接以获取更多信息:https://stackoverflow.com/a/60051861/21957513我知道在ReactJS中渲染HTML的两种方法:1.使用react-render-html库(链接:https://www.npmjs.com/package/react-render-html)
示例代码:
import React from 'react'; import renderHTML from 'react-render-html'; const YourComponent = ({ jsonResponse }) => { return ( <div> {renderHTML(jsonResponse)} </div> ); }; export default YourComponent;
字符串1.使用react-markdown库(链接:https://www.npmjs.com/package/react-markdown#react-markdown)
import React from 'react'; import ReactMarkdown from 'react-markdown'; const YourComponent = ({ jsonResponse }) => { return ( <div> <ReactMarkdown children={jsonResponse} /> </div> ); }; export default YourComponent;
型现在,我强烈建议选择第二个选项,使用react-markdown,因为react-markdown构建了一个虚拟DOM,所以React只会从语法树中替换更改的内容。而且,最重要的是-它有更多的社区支持和广泛采用。如果你有什么问题,就告诉我。
2条答案
按热度按时间j8ag8udp1#
如果你的JSON响应包含类似HTML的元素(例如,编号列表,项目符号,URL),并且你想将它们呈现为React元素,你可能需要在将JSON数据传递给
react-json-view
之前对其进行预处理。你可以使用像react-html-parser
这样的库将HTML字符串转换为React元素:字符串
或
型
然后,您可以在组件中使用它:
型
qyyhg6bp2#
我们不应该在ReactJS中使用“危险的内部html”,查看此链接以获取更多信息:https://stackoverflow.com/a/60051861/21957513
我知道在ReactJS中渲染HTML的两种方法:
1.使用react-render-html库(链接:https://www.npmjs.com/package/react-render-html)
示例代码:
字符串
1.使用react-markdown库(链接:https://www.npmjs.com/package/react-markdown#react-markdown)
示例代码:
型
现在,我强烈建议选择第二个选项,使用react-markdown,因为react-markdown构建了一个虚拟DOM,所以React只会从语法树中替换更改的内容。而且,最重要的是-它有更多的社区支持和广泛采用。
如果你有什么问题,就告诉我。