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

4

我正在尝试使用react-slick在走马灯中展示我的自定义组件:

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

但是似乎react-slick不支持这种用法。

JsFiddle演示

https://jsfiddle.net/jqLzpewm/

4个回答

4

它可以正常工作,这与轮播样式有关。我已经更新了您的fiddle以展示其工作原理:https://jsfiddle.net/ox1ujxa4/1/

只需进行一些小的样式调整:

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

1
您需要使用 <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>


1
今天我遇到了这个问题。我有一个无状态的幻灯片组件,并且我正在做类似于以下内容的操作:
<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>

{{链接1:JsFiddle}}


0
将包装器添加到组件中,它应该可以工作。
 <Slider {...settings}>
    <div>
        <Hello />
        <Hello />
      </div>
 </Slider>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接