使用 .map 将 API 数据加载到 Slick-Slider 组件中
Using .map to load API data into Slick-Slider Component
目前,我正在使用 react-slick slider
在我的网站上安装轮播组件,并使用 Strapi 作为我的 CMS。我想通过我正在获取的 CMS API 填写此内容。通常我使用这段代码来填写我的内容:
export default function Page({posts}) {
return (
{posts &&
posts.map((team) => (
{posts.Title}
))}
但是对于我的 <Slider>
我正在使用这段代码并且无法添加我的 .map
函数,因为 class 正在扩展组件:
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 },
};
}
有什么方法可以在我的 <Slider>
组件中使用 .map
函数来获取图像和标题?
我添加了我的代码的沙箱,codesandbox。io/s/recursing-solomon-c20on?file=/src/Slide.tsx 就在这里我在 posts 数组中放入了虚拟数据,但实际上它来自 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 },
};
}
目前,我正在使用 react-slick slider
在我的网站上安装轮播组件,并使用 Strapi 作为我的 CMS。我想通过我正在获取的 CMS API 填写此内容。通常我使用这段代码来填写我的内容:
export default function Page({posts}) {
return (
{posts &&
posts.map((team) => (
{posts.Title}
))}
但是对于我的 <Slider>
我正在使用这段代码并且无法添加我的 .map
函数,因为 class 正在扩展组件:
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 },
};
}
有什么方法可以在我的 <Slider>
组件中使用 .map
函数来获取图像和标题?
我添加了我的代码的沙箱,codesandbox。io/s/recursing-solomon-c20on?file=/src/Slide.tsx 就在这里我在 posts 数组中放入了虚拟数据,但实际上它来自 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 },
};
}