ReactJs - 将带有嵌套 React 组件的原始 HTML 转换为 JSX

Posted

技术标签:

【中文标题】ReactJs - 将带有嵌套 React 组件的原始 HTML 转换为 JSX【英文标题】:ReactJs - Converting raw HTML with nested React Component into JSX 【发布时间】:2016-10-12 18:36:35 【问题描述】:

我最近一直在尝试在一个单独的文件中定义我渲染的 JSX,即使用 HAML,然后使用带有 Webpack 的加载器将 HAML 转换为可用的 JSX。为此,我首先使用 haml-haml-loader 模块将 HAML 转换为 html,然后使用 html-to-react 模块完成工作。但是,我发现有很多方法可以做到这一点,而不仅仅是这里概述的一种。 这在 HAML 是纯 HAML 时效果很好,例如

.wrapper
    %p Hello World

然而,React JSX 的美妙之处在于,您可以在提供给渲染函数的 JSX 中嵌套其他 React 组件的标签。所以,我当然想通过 HAML 定义该功能:

.wrapper
    %Greeting/

当通过 Webpack 运行时返回以下 HTML:

<div class="wrapper">
    <Greeting>
</div>

作为一个字符串。看起来不错,对吧?但是,当使用 dangerouslySetInnerHtml 或 html-to-react npm 包(以及许多其他模块)时,转换后的 JSX 变为:

<div class="wrapper">
    <greeting></greeting>
</div>

这不是预期的 JSX。 关于如何进行的任何想法?

【问题讨论】:

【参考方案1】:

要在 JSX 中渲染 HAML,您可以使用 https://github.com/dingbat/haml-jsx-loader 库。 这是一个 Webpack 加载器。 然后你可以有类似的东西

render() 
  return (~
    .wrapper
      <Greetings />
  ~);

很酷,不是吗?

如果不使用 Webpack,还有其他库(主要是在 JSX 中实现 Jade)。

【讨论】:

以上是关于ReactJs - 将带有嵌套 React 组件的原始 HTML 转换为 JSX的主要内容,如果未能解决你的问题,请参考以下文章

React 如何使用 refs 来聚焦/模糊?

ReactJS:组件未在嵌套路由中呈现

带有 ReactJS 的 Django 表单

ReactJS学习笔记-组件嵌套与组件复用

ReactJS学习笔记-组件嵌套与组件复用

ReactJS学习笔记-组件嵌套与组件复用