如何使用next.js创建动态xml站点地图?检查下面的代码

如何使用next.js创建动态xml站点地图?检查下面的代码,next.js,rss,xml-sitemap,Next.js,Rss,Xml Sitemap,我正在按照一种方法建立一个网站地图。在http/:localhost:3000上,页面看起来像这样。我下面的博客给出了 sitemap.xml: *>此XML文件似乎没有任何关联的样式信息 用它。文档树如下所示。 http://localhost:3000/about.jshttp://localhost:3000/activate.jshttp://localhost:3000/blogshttp://localhost:3000/categorieshttp://localhost:300

我正在按照一种方法建立一个网站地图。在http/:localhost:3000上,页面看起来像这样。我下面的博客给出了
sitemap.xml:
*>此XML文件似乎没有任何关联的样式信息

用它。文档树如下所示。 http://localhost:3000/about.jshttp://localhost:3000/activate.jshttp://localhost:3000/blogshttp://localhost:3000/categorieshttp://localhost:3000/contact.jshttp://localhost:3000/disclaimer.jshttp://localhost:3000/index.jshttp://localhost:3000/privacy.jshttp://localhost:3000/profilehttp://localhost:3000/search.jshttp://localhost:3000/signin.jshttp://本地主机:3000/注册。jshttp://localhost:3000/tagshttp://localhost:3000/user [对象][对象]*

我做了什么?

我在
sitemp.xml.js

import React from 'react';
import BlogSitemap from '../components/JobSitemap';
import NewSitemap from '../components/NewSitemap';
import {DOMAIN} from '../config';
import fs from "fs";



const Sitemap = () => {};

export const getServerSideProps = ({ res }) => {
    
const staticPages = fs
    .readdirSync("pages")
    .filter((staticPage) => {
      return ![
        "_app.js",
        "_document.js",
        "_error.js",
        "sitemap.xml.js",
      ].includes(staticPage);
    })
    .map((staticPagePath) => {
      return `${DOMAIN}/${staticPagePath}`;
    });

    //sitemap render
  const sitemap = `<?xml version="1.0" encoding="UTF-8"?>
    <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
    ${staticPages.join('')}
    ${<BlogSitemap />}
    ${<NewSitemap/>}
    </urlset>
  `;

  res.setHeader("Content-Type", "text/xml");
  res.write(sitemap);
  res.end();

  return {
    props: {},
  };
};

export default Sitemap;
从“React”导入React;
从“../components/JobSitemap”导入博客站点地图;
从“../components/NewSitemap”导入NewSitemap;
从“../config”导入{DOMAIN};
从“fs”导入fs;
const Sitemap=()=>{};
导出常量getServerSideProps=({res})=>{
常量staticPages=fs
.readdirSync(“页面”)
.filter((静态页面)=>{
回来[
“_app.js”,
“_document.js”,
“_error.js”,
“sitemap.xml.js”,
]。包括(第页);
})
.map((staticPagePath)=>{
返回`${DOMAIN}/${staticPagePath}`;
});
//站点地图渲染
常数站点地图=`
${staticPages.join(“”)}
${}
${}
`;
res.setHeader(“内容类型”、“文本/xml”);
res.write(站点地图);
res.end();
返回{
道具:{},
};
};
导出默认站点地图;
什么问题?
静态页面呈现得非常好。对于动态页面,我创建了单独的组件。这些动态组件显示为对象。简而言之,这种方法是行不通的。我想显示这些组件中的所有链接。我应该如何在站点地图中呈现它们。这些组件的代码如下所示
BlogSitemap.js

import React, { useState, useEffect } from 'react';
import {list} from '../actions/blog';
import {DOMAIN} from '../config'

const BlogSitemap=()=>{
    const [blogs, setBlogs] = useState([]);
    useEffect(() => {
        loadBlogs();
    }, []);

    const loadBlogs = () => {
        list().then(data => {
            if (data.error) {
                console.log(data.error);
            } else {
                setBlogs(data);
            }
        });
    };
    const BlogLinks=()=>{
        return blogs.map((blog,i)=>{
            `
            <url key=${i}>
                    <loc>${DOMAIN}/blogs/${blog.slug}</loc>
                    <lastmod>${blog.updatedAt}</lastmod>
                    <changefreq>daily</changefreq>
                    <priority>1.0</priority>
            </url>
            `
        })
    }
    return (
        <>
        {blogLinks()}
        </>
    )
}
export default BlogSitemap;
import React,{useState,useffect}来自“React”;
从“../actions/blog”导入{list};
从“../config”导入{DOMAIN}
const BlogSitemap=()=>{
const[blogs,setBlogs]=useState([]);
useffect(()=>{
loadBlogs();
}, []);
const loadBlogs=()=>{
list()。然后(数据=>{
if(data.error){
console.log(data.error);
}否则{
日志(数据);
}
});
};
常量BlogLinks=()=>{
返回blogs.map((blog,i)=>{
`
${DOMAIN}/blogs/${blog.slug}
${blog.updatedAt}
每日的
1
`
})
}
返回(
{blogLinks()}
)
}
导出默认博客站点地图;

NewsSitemap组件与之类似。请告诉我如何正确使用它。

为什么要向站点地图XML添加组件?您希望向其中添加URL。我建议你再看一遍之前的教程。他正在使用graphql,但我没有。我只是想尝试一下。我只想在站点地图中自动添加动态生成的URL(比如带有slug的完整博客URL)。我也尝试了()这个,但它只生成静态页面。请提供somw geniune解决方案