首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用React的dangerouslySetInnerHTML而不使用div?

使用React的dangerouslySetInnerHTML而不使用div?
EN

Stack Overflow用户
提问于 2018-12-23 09:06:32
回答 1查看 1.7K关注 0票数 3

我目前正在尝试调整React组件,以便可以从常规的非React脚本中调用它。我正在尝试使用的特定组件是“react-responsive-carousel”。

HTML:

代码语言:javascript
复制
<div id="slides" style="display: none">
    <div>
      <img src="http://lorempixel.com/output/cats-q-c-640-480-1.jpg" />
      <p className="legend">Legend 1</p>
    </div>
    <div>
      <img src="http://lorempixel.com/output/cats-q-c-640-480-2.jpg" />
      <p className="legend">Legend 2</p>
    </div>
<div>

<div id="root"></div>

然后在“react adaptor”中:

代码语言:javascript
复制
import "react-responsive-carousel/lib/styles/carousel.min.css";
import { Carousel } from "react-responsive-carousel";

function renderCarousel(targetElementId, html) {
  const App = function() {
    return <Carousel>
      <div dangerouslySetInnerHTML={{ __html: html }} />
    </Carousel>;
  };

  render(<App />, document.getElementById(targetElementId));
}

然后,非React脚本将使用的调用代码:

代码语言:javascript
复制
renderCarousel("root", document.getElementById("slides").innerHTML);

这样做的问题是引入了一个额外的'div‘,它破坏了carousel的行为。有没有办法通过这样的方式传递这个HTML ? id为'slides‘的div的内部HTML直接位于Carousel组件之下,或者可能有其他方法来实现预期的目标?

请注意,这需要在ES5调用上下文中工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-23 09:18:44

我理解这个问题,所以你那里的html应该是所有的幻灯片,对吧?

我要做的是将幻灯片作为数组传递给函数:

代码语言:javascript
复制
renderCarousel(targetElementId, slides)

所以你可以这样做:

代码语言:javascript
复制
function renderCarousel(targetElementId, slides=[]) {
  const App = function() {
    return <Carousel>
      {slides.map(html => <div dangerouslySetInnerHTML={{ __html: html }} />)}
    </Carousel>;
  };

  render(<App />, document.getElementById(targetElementId));
}

它应该与以下内容一起工作:

代码语言:javascript
复制
const slides = Array.from(document.getElementById("slides").children)
renderCarousel("root", slides.map(slide=> slide.innerHTML))

让我知道它进行得怎么样!

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53900459

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档