首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Gatsby和Graphql -如何按文件夹过滤allMarkdownRemark

Gatsby是一个基于React的静态网站生成器,它可以帮助开发者快速构建高性能的静态网站。而GraphQL是一种用于API的查询语言和运行时环境,它可以让客户端精确地获取需要的数据,避免了传统RESTful API中的过度获取或不足获取的问题。

在Gatsby中,可以使用GraphQL来查询和过滤数据。针对问题中的需求,按文件夹过滤allMarkdownRemark,可以通过使用filter参数来实现。具体步骤如下:

  1. 在Gatsby项目中,首先需要安装并配置gatsby-source-filesystem插件,该插件可以将文件系统中的数据源导入到Gatsby中。
  2. gatsby-config.js文件中,配置gatsby-source-filesystem插件,指定需要导入的文件夹路径,例如:
代码语言:txt
复制
module.exports = {
  plugins: [
    {
      resolve: "gatsby-source-filesystem",
      options: {
        name: "markdown-pages",
        path: `${__dirname}/src/markdown-pages`,
      },
    },
  ],
};

上述配置中,path指定了需要导入的文件夹路径为src/markdown-pages

  1. 在需要过滤的页面或组件中,使用GraphQL查询语句来获取allMarkdownRemark数据,并通过filter参数按文件夹进行过滤。例如:
代码语言:txt
复制
import React from "react";
import { graphql } from "gatsby";

export const query = graphql`
  query($folder: String!) {
    allMarkdownRemark(filter: { fileAbsolutePath: { regex: $folder } }) {
      edges {
        node {
          frontmatter {
            title
          }
          html
        }
      }
    }
  }
`;

const MyComponent = ({ data }) => {
  // 使用过滤后的数据进行渲染
  return (
    <div>
      {data.allMarkdownRemark.edges.map(({ node }) => (
        <div key={node.frontmatter.title}>
          <h2>{node.frontmatter.title}</h2>
          <div dangerouslySetInnerHTML={{ __html: node.html }} />
        </div>
      ))}
    </div>
  );
};

export default MyComponent;

上述代码中,$folder是GraphQL变量,用于传递文件夹路径。filter参数中的fileAbsolutePath可以使用正则表达式来匹配文件夹路径,实现按文件夹过滤。

这样,通过以上步骤,就可以在Gatsby中按文件夹过滤allMarkdownRemark数据了。

推荐的腾讯云相关产品:腾讯云云服务器(CVM)、腾讯云对象存储(COS)。

  • 腾讯云云服务器(CVM):提供弹性计算能力,可根据业务需求灵活选择配置,支持多种操作系统,适用于各类应用场景。产品介绍链接:腾讯云云服务器
  • 腾讯云对象存储(COS):提供安全、稳定、低成本的云端存储服务,适用于图片、音视频、文档等各类文件的存储和管理。产品介绍链接:腾讯云对象存储
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券