javascript - 将子 HTML 视为字符串并视为 React 中的 HTML

标签 javascript reactjs react-component

我正在尝试创建一个组件,它既显示某些包含其他组件的 HTML 的结果,又显示代码本身。基本上,这是一个演示标记并显示使用了哪些标记且子组件完好无损的容器。我遇到的问题是,当我想要尚未解析的文字输入并且仍然包含已使用的任何组件标记时,我似乎只能将完全渲染的 HTML 显示为代码。

<ParentComponent>
    <div></div>
    <ChildComponent></ChildComponent>
    <div></div>
</ParentComponent>

我希望 ParentComponent 既能完全渲染其所有子组件,又能将其中的所有 HTML 视为字符串,本质上,理想情况下无需维护子组件的两个副本。渲染的版本没有问题,这是自然发生的,但是我似乎无法从任何地方获取字符串形式,它获取渲染的版本,其中 ChildComponent 被它渲染的内容替换。

最佳答案

我想这应该适合您的用例。

import React from "react";
import ReactDOM from "react-dom";
import jsxToString from 'jsx-to-string';

const ParentComponent = props => (
  <div>
    {`I'm a ParentComponent`} 
    {props.children}
  </div>
);
const ChildComponent = () => <div>{`I'm a ChildComponent`}</div>;

const getParent = () => <ParentComponent>
  <div />
  <ChildComponent />
  <div />
</ParentComponent>;

function App() {
  return (
    <div className="App">
      {getParent()}
      {jsxToString(getParent())}
    </div>
  );
}

const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);

尝试一下。

关于javascript - 将子 HTML 视为字符串并视为 React 中的 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50973865/

相关文章:

javascript - React Hook 表单 : Submit a form with nested components or extract fields of nested components to submit

javascript - emergent react-autosuggest 列表中不监听 event click

javascript - 如何替换模态上版本前的追加内容

javascript - 在 Cycle2 中,如何区分对寻呼机项目的点击和对上一个/下一个项目的点击?

javascript - 道场拖放

javascript - 从 javascript 对象中递归添加和删除值

reactjs - 如何在 Reactjs 中使用 sequelize 添加或条件

javascript - react 类型错误: "x" is not a function

ReactJs 管理一组有状态组件

javascript - 模态未显示