代码之家  ›  专栏  ›  技术社区  ›  Jesse Winton

在浏览器中编译用户HTML并使用React显示结果

  •  0
  • Jesse Winton  · 技术社区  · 2 年前

    我正在写下一篇文章。我想创建一个部分,允许用户编写简单的HTML和CSS,并编译结果,在浏览器中显示它们。 Similar to the editor pages on W3

    就我所尝试的内容而言,我没有太多可以继续的内容,因为这对我来说是一个全新的概念,但从我在其他类似工具中看到的一点来看,您可以将代码编译成 Blob() 然后设置 Blob() 作为 src 对于 iframe 。我尽可能多地搜索了SO和Google,但没有找到任何有用的东西,所以我想知道是否有人有任何提示或地方可以让我开始尝试创建这样的浏览器内HTML编译器,最好与React/Next轻松兼容。js。

    提前感谢!

    2 回复  |  直到 2 年前
        1
  •  1
  •   Mohammad Reza    2 年前

    您可以使用 iframe textarea 文本区域 将用作编辑器 iframe 作为沙盒来查看结果。

    const Sandbox = () => {
      const textareaRef = useRef(null);
      const [code, setCode] = useState("");
    
      const runCode = () => setCode(textAreaRef.current.value);
    
      return (
        <div className="App">
          <div>
            <textarea ref={textareaRef}></textarea>
            <button onClick={runCode}>Run</button>
          </div>
          <iframe
            src={"data:text/html," + encodeURIComponent(code)}
            title="sandbox"
          />
        </div>
      );
      
    }

    在这里,我们创建 ref 访问 文本区域 内容,以及用于运行用户输入的代码段的按钮。然后将该代码传递给 iframe 使用 src 属性,然后它将像现有HTMl页面一样呈现输入的代码。看看 here 有关其工作原理的更多信息。

    请参见上的工作示例 codesandbox

        2
  •  0
  •   awesome webber    2 年前

    如果要在react中呈现html输入,可以使用下面的

    const App = () => {
      const data = 'lorem <b>ipsum</b>';
    
      return (
        <div
          dangerouslySetInnerHTML={{__html: data}}
        />
      );
    }
    
    export default App;
    

    这将呈现您键入的任何html。