javascript - 使用 .map 将 API 数据加载到 Slick-Slider 组件中
问题描述
目前我在我的网站和Strapireact-slick slider
中使用轮播组件作为我的 CMS。我想通过我正在获取的 CMS API 填写此内容。通常我使用这段代码来填写我的内容:
export default function Page({posts}) {
return (
{posts &&
posts.map((team) => (
{posts.Title}
))}
但是对于我来说,<Slider>
我正在使用这段代码并且无法添加我的.map
函数,因为该类正在扩展组件:
export default class BlogPost extends Component {
render() {
var settings = {
dots: true,
infinite: false,
speed: 500,
slidesToShow: 4,
slidesToScroll: 4,
initialSlide: 0,
nextArrow: <SampleNextArrow />,
prevArrow: <SamplePrevArrow />,
responsive: [
{
breakpoint: 1024,
settings: {
slidesToShow: 3,
slidesToScroll: 3,
infinite: true,
dots: true,
},
},
],
};
return (
<>
<div>
<Slider {...settings}>
<div>
<img style={{ width: "90%" }} src="/countries1.png" />
<div
style={{
minHeight: "100px",
padding: "30px",
textAlign: "center",
}}
>
<div>
Reasons to Acquire Antigua & Barbuda Citizenship by Investment{" "}
</div>
<br />
<div>Read More</div>
</div>
</div>
<div>
<h3>2</h3>
</div>
</Slider>
</div>
</>
);
}
}
export async function getStaticProps() {
const res = await fetch("http://localhost:1337/blogs");
const posts = await res.json();
return {
props: { posts },
};
}
有什么方法可以.map
在我的组件中使用这里的函数来获取图像和标题<Slider>
?
我已经添加了我的代码的沙箱,codesandbox.io/s/recursing-solomon-c20on?file=/src/Slide.tsx 就在这里我已经在帖子数组中放入了虚拟数据,但实际上它来自 getStaticProps API 调用
解决方案
不确定这是否会按原样使用。但这是一般的想法。
const sliderSettings = {
dots: true,
infinite: false,
speed: 500,
slidesToShow: 4,
slidesToScroll: 4,
initialSlide: 0,
nextArrow: <SampleNextArrow />,
prevArrow: <SamplePrevArrow />,
responsive: [
{
breakpoint: 1024,
settings: {
slidesToShow: 3,
slidesToScroll: 3,
infinite: true,
dots: true,
},
},
],
};
export default class BlogPost extends Component {
constructor(props) {
super(props);
this.state = {posts: []};
}
componentDidMount() {
getStaticProps().then(data => {
this.setState({
posts: data.props.posts
});
});
}
getSlides() {
return this.state.posts.map((post) => {
// ... generate divs and imgs here.
})
}
render() {
const slides = this.getSlides()
return (
<>
<div>
<Slider {...sliderSettings}>
{slides}
</Slider>
</div>
</>
);
}
}
export async function getStaticProps() {
const res = await fetch("http://localhost:1337/blogs");
const posts = await res.json();
return {
props: { posts },
};
}
推荐阅读
- ios - React native:我可以在 iOS 模拟器上运行应用程序,但不能在真实设备上运行
- php - 如何从 phpmailer 获取错误列表?
- java - 当我从 Java 程序将 unicode 字符打印到 Windows 7 控制台时,为什么会显示其他字符?
- excel - 如何从列表框中获取输出以填充某些单元格
- python - GSPREAD:如何从具有许多工作表的电子表格中获取最后添加的工作表?
- bash - 使用 Shell 清理十天或更早的日志
- c# - 尝试使用将对象放入数组时无法从 void 转换为模型
- imagemagick - ImageMagick 在 alpha 为 0 时移除颜色(png)
- javascript - jQuery 动画在用户滚动时停止
- c - 开始 (^) 和结束 ($) 锚点不起作用