【发布时间】:2022-09-23 15:35:02
【问题描述】:
我是 React 的初学者,我使用 React 前端制作了一个投资组合网站。
我想为应用程序添加一个动态站点地图,并且几乎尝试了 youtube、stackoverflow 和 google 上给出的所有可能的方式。但是,如果我添加一个新的投资组合,我就不能做我想做的事情,它不会出现在站点地图中。
我已经尝试过的事情:-
- 起初,我在公用文件夹中添加了一个包含所有静态内容的
sitemap.xml文件,但出现了同样的问题,每次添加作品集时我都必须构建整个应用程序,而且我必须手动更改站点地图。 - 我还尝试了
react-snap和react-snap-sitemap一起工作,但大多数情况下,我不知道为什么,但css停止工作。大多数情况下,它发生在我不想在站点地图中出现或我不希望它们被抓取的页面上。 - 然后,我还尝试了一种方法,其中有一个
sitemap-generator.js,我们必须运行它才能在build文件夹中创建一个sitemap.xml文件,但是,我们将不得不一次又一次地构建它,一个更大的问题是它使用了错误的 babel 脚本。 - 然后我终于发现
react-dynamic-sitemap几乎可以完美运行,但问题是它正在渲染组件Sitemap而不是文件sitemap.xml。
因此,xml内容显示为文本。
我还找到了将其显示为 xml 内容的方法,但我无法这样做。
我认为这个站点地图无法提交给谷歌,而且这不是纯粹动态的。
因为,对于投资组合详细信息页面,我必须像这样在slugs参数中传递 slugs:[{id: \"foo\"}, {id: \"bar\"}]。我试图从数据库中获取这些,但即使我使用.then(),然后在从服务器获取投资组合数据后加载Routes,它也会给出错误,因为它必须在其他Sitemap组件中加载直到那时.
react-dynamic-sitemap的代码:-
站点地图.js
import React from \"react\";
import Routes from \"./Routes\";
import DynamicSitemap from \"react-dynamic-sitemap\";
export default function Sitemap(props) {
return (
<DynamicSitemap routes={Routes} prettify={true} {...props}/>
);
}
路由.js
import React, { useContext, useEffect, useState } from \'react\';
import { Route, Routes } from \'react-router-dom\';
import { Portfolio } from \'./PortfolioComponent/Portfolio\';
import { PortfolioDetail } from \'./PortfolioDetailComponent/PortfolioDetail\';
import Sitemap from \'./Sitemap\';
const MyRoutes = () => {
return (
<Routes>
...Other Static Routes...
<Route
path=\"/portfolio\"
element={<Portfolio />}
sitemapIndex=\'true\'
changefreq=\'weekly\'
priority=\'1\'
/>
<Route
path=\"/portfolio/:slug\"
element={<PortfolioDetail />}
sitemapIndex=\'true\'
changefreq=\'weekly\'
priority=\'1\'
slugs={[Objects of the slugs of different portfolios have to written staticly]}
/>
<Route path=\"/sitemap\" element={<Sitemap />}></Route>
</Routes>
)
}
export default MyRoutes;
有人可以回答这些问题吗?结束所有 React 开发人员的问题:-
- 在 react 中静态生成站点地图的最佳方法是什么,正如许多解决方案所说的使用 nextjs 或使用在线站点地图生成器
- 如果没有其他办法,我们如何将
react-dynamic-sitemap内容渲染为xml