javascript - 用于将 HTML block 传递给 React 组件的全局 JS 变量

标签 javascript reactjs

我有一段 HTML,需要在页面加载时发送到 React 组件而不渲染它。由于缓存,我宁愿不使用 AJAX,但如果我无法弄清楚这一点,我可能会恢复使用 AJAX。

在jsp方面,我有这个:

<script>window.banner_data_for_desktop = "...droplet..."</script>

这包含我需要传递的 HTML block

<div id="desktop-top-banner">
  <div>
    ...
  </div>
</div>

在 jsx 方面,我尝试过像这样直接渲染:

<div id="top_bar">{window.banner_data_for_desktop}</div>

这会呈现内容,但将 div 标签显示为字符串,而不是输出为 HTML。

然后我尝试使用angerlySetInnerHTML,如下所示:

<div id="top_bar">dangerouslySetInnerHTML={{ __html: window.banner_data_for_desktop }}</div>

这会导致错误:

Invariant Violation: Objects are not valid as a React child (found: object with keys {__html}). If you meant to render a collection of children, use an array instead.

我尝试使用 Stringify、toString 创建一个函数来返回 html,如下所示:

function createMarkup() {
  return {__html: window.banner_data_for_desktop};
}

一切都没有任何运气。如果有人建议从全局 JS 对象渲染 HTML,我将不胜感激!

最佳答案

dangerouslySetInnerHtml 应该是标记的属性:

<div dangerouslySetInnerHTML={{__html: "HTML CHUNK"}}></div>

关于javascript - 用于将 HTML block 传递给 React 组件的全局 JS 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58566694/

相关文章:

javascript - 如何实际拦截 res.render

javascript - D3 树布局 : How to fill rectangles with text, 但它们的大小统一吗?

ReactJS条件组件显示

javascript - 你如何在 typescript 中声明一个对象数组?

javascript - React Redux 单元测试用例

reactjs - 属性 `history` 在 `Router` 中被标记为必需,但其值为 `undefined` 。在路由器中

javascript - react Formik : how to use custom function onChange and onConfirmChange for request input

javascript - 一个页面中的多个 easyXDM

javascript - 使用 Apify 进行网页抓取

javascript - 检测用户点击 HTML 表格 TD,并获取值