在Gatsby/React/GraphQL中渲染来自同一数组的图像和视频,可以通过以下步骤实现:
useStaticQuery
钩子来执行GraphQL查询。map
函数遍历数据数组,并在每次迭代时渲染图像和视频元素。你可以使用<img>
标签来渲染图像,使用<video>
标签来渲染视频。同时,可以在元素中包含其他相关信息,比如标题、描述等。以下是一个简单的示例代码:
import React from "react";
import { useStaticQuery, graphql } from "gatsby";
const ImageVideoGallery = () => {
// 使用GraphQL查询获取图像和视频数据
const data = useStaticQuery(graphql`
query {
allMedia {
nodes {
id
url
type
title
description
}
}
}
`);
// 遍历数据数组,渲染图像和视频元素
const mediaNodes = data.allMedia.nodes;
const renderedMedia = mediaNodes.map((node) => {
if (node.type === "image") {
return (
<div key={node.id}>
<img src={node.url} alt={node.title} />
<h3>{node.title}</h3>
<p>{node.description}</p>
</div>
);
} else if (node.type === "video") {
return (
<div key={node.id}>
<video src={node.url} controls>
Sorry, your browser doesn't support embedded videos.
</video>
<h3>{node.title}</h3>
<p>{node.description}</p>
</div>
);
}
});
return <div>{renderedMedia}</div>;
};
export default ImageVideoGallery;
在上述示例代码中,我们假设已经在GraphQL中定义了一个名为allMedia
的查询,用于获取图像和视频数据。每个数据节点都包含id
、url
、type
、title
和description
字段。根据type
字段的值,我们判断是渲染图像还是视频。
这只是一个基本的示例,你可以根据自己的需求进行扩展和优化。如果你使用腾讯云作为云计算服务提供商,可以使用腾讯云的对象存储服务 COS 存储和获取图像和视频资源。具体的产品介绍和使用文档可以参考腾讯云的官方文档:腾讯云对象存储 COS。
领取专属 10元无门槛券
手把手带您无忧上云