【发布时间】:2023-01-09 10:49:16
【问题描述】:
我有太多查询和 url 像这样 /projects/1/&category=Branding&title=Mobile+App&about=Lorem+ipsum+Lorem+ 并且比这更长!。
我只想像这样重定向 /projects/1/mobile-app 。我一直试图解决这个问题一个星期。我找到了几个解决方案,但它们与 router.push 一起使用,而我在地图中使用 Link 。有人告诉我在有效链接后使用 as={} 但页面在刷新后出现错误。
项目.tsx
mport { AddProject } from "../../data/projects/AddProject";
import { projectsData } from "./../../types/types";
const Projects = () => {
const [loadMore, setLoadMore] = useState<number>(4);
const [activeMenu, setActiveMenu] = useState<string>("All");
function getFilteredList() {
if (activeMenu === "All") {
return AddProject;
}
return AddProject.filter((project) => project.category === activeMenu);
}
const showMoreItems = () => {
setLoadMore((prevValue) => prevValue + 4);
};
const filteredList = useMemo(getFilteredList, [activeMenu]);
{filteredList.slice(0, loadMore).map((project: projectsData) => (
<Link
key={project.id}
href={{
pathname: "/projects/" + project.id,
query: {
id: project.id,
category: project.category,
title: project.title,
about: project.aboutproject,
company: project.company,
client: project.client,
date: project.date,
website: project.website,
image: project.image.src,
image1: project.image1.src,
image2: project.image2.src,
image3: project.image3.src,
image4: project.image4.src,
image5: project.image5.src,
},
}}
passHref={true}
>
[项目].tsx
export const getServerSideProps: GetServerSideProps = async (context: any) => {
{
const { query } = context;
return { props: { query } };
}
};
const Details = (props: any) => {
const { query } = props;
const [relatedPosts] = useState(AddProject);
const [index, setIndex] = useState<any>(0);
const getResult = () => {
return relatedPosts.filter(
(related) => related.category === query.category
);
};
var filteredList = useMemo(getResult, [query.category, relatedPosts]);
const current = filteredList[index];
return (
<>
<div className="single__page">
<div className="down__arrow">
<Links
activeClass="down__arrow"
to="about__project"
spy={true}
smooth={true}
offset={-70}
duration={500}
>
<CustomIcons name="DownArrow" />
</Links>
</div>
<div className="single__header">
<h2>{query.title}</h2>
</div>
</div>
【问题讨论】:
-
“as={} 在链接有效但页面在刷新后出现错误”- 如果您想从 URL 中完全隐藏查询参数,则必须在客户端保留查询参数的状态(例如
localStorage)。
标签: javascript reactjs next.js dynamic-routing