javascript - 在 React 中注入(inject)动态 HTML - CSS 不工作

标签 javascript html reactjs

从 API 获取动态 HTML,HTML 加载正常,但 CSS 不适用于此新 HTML。

我需要重新加载 CSS 吗?

import React, { Component } from "react";
import Utility from "../common/Utility";

class Template extends Component {
  constructor(props) {
  super(props);
  this.token = localStorage.getItem("token");
  this.client_id = localStorage.getItem("client_id");
 }

 componentDidMount() {
   //fetching dynamic html
   Utility.ExecuteData("template", this.token, {
    client_id: this.client_id
   }).then(result => {
      var dynamic_html = document.getElementById("dynamic_html");
      dynamic_html.innerHTML = result.data[0].template;
     });
 }

 render() {
  return (
   <React.Fragment>
    <div id="dynamic_html" />
   </React.Fragment>
  );
 }
}

export default Template;

最佳答案

有可能让它工作,但你需要使用通常的 HTML class 属性而不是 className。我在这里使用了 dangerouslySetInnerHTML,但是如果您像在问题中那样设置元素的 innerHTML,结果是一样的。

function Template({ html }) {
  return (
    <div dangerouslySetInnerHTML={{__html: html}} />
  );
}

const html = '<div class="heading">With style</div>';

ReactDOM.render(
  <Template html={html} />,
  document.getElementById('container')
);
.heading {
  font-size: 2em;
  color: red;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
<div id="container"></div>

关于javascript - 在 React 中注入(inject)动态 HTML - CSS 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53558074/

相关文章:

javascript - 聊天 GPT 响应的格式

javascript - 需要有关 HTTPSession 超时的帮助

javascript - 在 Javascript 中更改动态链接文本

html - 即使页面放大或缩小,如何保持固定的背景图像大小?

javascript - 如何处理react-redux应用中加载中断的情况

javascript - 如何在第一次加载页面之前调用react中的操作?

javascript - Restangular:WAITING promise 的解决?

将 keyCodes 转换为字符的 JavaScript 函数

javascript - "You should not use <Switch> outside a <Router>"尽管可用 BrowserRouter

javascript - 如何在两个不同 div 中显示的两个图标之间绘制连线。