使用 react-slick 在轮播中显示反应组件

Displaying react components in carousel using react-slick

我正在尝试使用 react-slick 在轮播中显示我的自定义组件:

    <Slider {...settings}>
        <Hello />
        <Hello />
    </Slider>

但是react-slick好像不支持这样的使用方式。

JsFiddle 演示

https://jsfiddle.net/jqLzpewm/

它的工作原理,就是对轮播进行样式设置。我已经更新了你的 fiddle 以证明它有效:https://jsfiddle.net/ox1ujxa4/1/

只是做了一些小的样式:

<div style={{display: 'inline-block', width: 500}}>
  Hello
</div>

我今天遇到了这个问题。我有一个无状态的 Slide 组件,我正在做这样的事情:

<Slider {...settings}>
    {
        slideTitles.map((title) => {
            return <Slide title={title} />;
        });
    }
</Slider>

幻灯片彼此堆叠,就好像所有幻灯片都被视为一张幻灯片的一部分。

我注意到 react-slick 没有将它应有的属性应用到每张幻灯片,即:

<div data-index="3" 
     class="slick-slide" 
     tabindex="-1" style="outline: none; width: 146705px;" 
     data-reactid=".0.0.1.0.$original3">

这里是解决方案(至少对于无状态组件):

<Slider {...settings}>
{
    slideTitles.map((title) => {
        return Slide({title});
    });
}
</Slider>

JsFiddle

将包装器添加到组件,它应该可以工作。

 <Slider {...settings}>
    <div>
        <Hello />
        <Hello />
      </div>
 </Slider>

你需要用 <div>:

包装你的 React 组件
 <Slider {...settings}>
    <div>
        <Hello />
    </div>
    <div>
        <Hello />
    </div>
 </Slider>

或者:

<Slider {...settings}>
    {
        slideItems.map((slideItem) => (
            <div key={slideItem.id}>
                <Slide title={slideItem.title}/>
            </div>
        ))
    }
</Slider>

data-indexclasstabindexstyle 属性将添加到 <div>