typescript 在路径名中使用元素ID时,带有URL对象的Nextjs链接不起作用

4nkexdtk  于 2022-11-26  发布在  TypeScript
关注(0)|答案(1)|浏览(76)

我已经添加翻译到我的网站,这要求我现在使用一个URL对象时,创建我的链接。我没有任何问题,这在任何地方,除了当我想点击一个链接,指向例如/#联系人。
当我只使用href='/#contact'的时候,这是可行的。但是如果我使用href={{ pathname: "/#contact", query: query }}的话,这将失败。
我已经查看了next/link文档,它只分别显示了这些内容,而不是一起工作时的内容。

lstz6jyr

lstz6jyr1#

也许这条评论能帮到你?

**编辑:**事实上,使用查询时,/#contact似乎被转换为%23contact。这也是您的问题吗?如果是,作为一种解决方法,您可以解析查询参数并仅使用href,如下所示:

import Link from 'next/link';
import React from 'react';

const Contact = () => {
  const query = { name: 'john', age: 10 };

  const params = Object.keys(query).reduce(
    (acc, el, index) =>
      acc.concat(`${index === 0 ? '?' : '&'}${el}=${query[el]}`),
    '',
  );

  return (
    <div>
      <Link href={`/#contact${params}`}>Click me</Link>
    </div>
  );
};

export default Contact;

结果是http://localhost:3000/#contact?name=john&age=10

相关问题