【发布时间】:2021-03-29 01:45:13
【问题描述】:
我正在尝试根据 Graphql 查询的结果在 Gatsby/React 中创建一个图像更改组件。 我被卡住了,不知道在 setInterval 函数中该做什么。任何帮助表示赞赏。谢谢
import React, { useState, useEffect } from "react";
import { graphql, useStaticQuery } from "gatsby";
import Img from "gatsby-image";
function ImgRotator() {
const imageData = useStaticQuery(graphql`
query {
allFile(filter: { extension: { regex: "/(jpg)|(jpeg)|(png)/" }, relativeDirectory: { eq: "rotator" } }) {
edges {
node {
id
childImageSharp {
fluid(maxWidth: 2880) {
...GatsbyImageSharpFluid_withWebp
}
}
}
}
}
}
`);
const allImages = imageData.allFile.edges;
const [images] = useState(allImages);
const [displayImage, setDisplayImage] = useState(imageData.allFile.edges[0].node.childImageSharp.fluid);
useEffect(() => {
const interval = setInterval(() => {
// Help! Don't know what to do here
}, 1000);
return () => clearInterval(interval);
}, [displayImage]);
return <Img fluid={displayImage} alt="" loading="eager" />;
}
export default ImgRotator;
【问题讨论】:
-
不难想象你需要一个计数器/索引(状态),并且应该在间隔内增加,重置为最大值......基本反应状态动作......自动增加计数器示例
标签: javascript reactjs graphql gatsby gatsby-image