解析JSON字符串化响应并将其呈现给React组件

fd3cxomn  于 4个月前  发布在  React
关注(0)|答案(2)|浏览(75)

当你在进行API调用后从open AI获得响应时,它会返回一个JSON字符串化的响应,当你在React组件中渲染它时,它的格式不正确。
例如:如果响应包含编号列表,项目符号或星号列表,它们不会中断或创建新行。例如,它也不会检测到新段落。如果有一个URL,它不能点击,也不能缩短,响应只是按原样呈现。顺便说一下,我在react聊天容器中呈现响应,我试图避免使用危险的内部html。
有没有其他的方法来正确格式化JSON响应?或者有没有类似的包来做这个?
尝试了危险的内部html,但这是有风险的。

j8ag8udp

j8ag8udp1#

如果你的JSON响应包含类似HTML的元素(例如,编号列表,项目符号,URL),并且你想将它们呈现为React元素,你可能需要在将JSON数据传递给react-json-view之前对其进行预处理。你可以使用像react-html-parser这样的库将HTML字符串转换为React元素:

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;

qyyhg6bp

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只会从语法树中替换更改的内容。而且,最重要的是-它有更多的社区支持和广泛采用。
如果你有什么问题,就告诉我。

相关问题