我开始使用 Next js,但我不知道这是它的问题还是 React 本身的问题。
所以问题是“react-multi-carousel”在我的应用程序中不起作用。因此,如果我对其中的值进行硬编码,基本上它可以工作,但是当我使用我的自定义组件时,其中是 map 函数,它不能正确呈现它。它需要 3 个组件,因为它们合二为一。您可以在我下面发布的图片上进行验证。我试图在Compilations
组件之外渲染组件SliderCarousel
,它应该可以正常工作,但是当我Compilations
作为孩子传递给时SliderCarousel
,它不会捕获它并从react-multi-carousel
库中给它自己的类
这是我下面的代码,我省略了一些导入和导出以将注意力集中在主要部分
我的Compilation
组件如下所示:
const compilation = ({ className, text, img }) => {
return (
<div className={`${className} ${classes.Compilation}`}>
<img src={img} alt={text} />
<div>
<h3>{text}</h3>
</div>
</div>
);
};
我的Compilations
组件如下所示:
const compilations = ({ items, onClick }) => {
const compilationsView = items.map(item => {
return <Compilation key={item.id} onClick={() => onClick(item.id)} text={item.text} img={item.img} />;
});
return <React.Fragment>{compilationsView}</React.Fragment>;
};
SliderCarousel
组件看起来像这样
<Carousel
swipeable={true}
draggable={true}
showDots={true}
responsive={responsive}
ssr={true} // means to render carousel on server-side.
infinite={true}
autoPlay={true}
autoPlaySpeed={1000}
keyBoardControl={true}
customTransition="all .5"
transitionDuration={500}
containerClass="carousel-container"
removeArrowOnDeviceType={[ "tablet", "mobile" ]}
// deviceType={this.props.deviceType}
dotListClass="custom-dot-list-style"
itemClass="carousel-item-padding-40-px"
>
{items}
</Carousel>{" "}
这是我的pages/index.js
文件
<SliderCarousel items={<Compilations items={getBookCarouselItems()} />} />
功能是:
{
id: 0,
img: "/static/images/main/books/slider-carousel/1.png",
text: "ТОП-10 романов"
},
{
id: 1,
img: "/static/images/main/books/slider-carousel/2.png",
text: "На досуге"
},
{
id: 2,
img: "/static/images/main/books/slider-carousel/3.png",
text: "Бестселлеры"
}
];
我希望你能帮我解决这个问题,因为我不知道如何解决这个问题