1. Решение для компонентов пользовательского интерфейса внутри Next. js Ссылочный компонент.
Я изучил документацию Next. js более подробно, и я нашел очень полезный атрибут для создания внешней ссылки для любого внутреннего пользовательского интерфейса. компоненты ( Semanti c UI , UI материала , Reactstrap , et c.) внутри компонента Link.
Давайте примем как пример простого компонента кнопки Semanti c UI. Чтобы добавить внешнюю ссылку в компонент Next. js Link, мы должны использовать атрибут passHref . Этот атрибут по умолчанию имеет значение false
. Этот атрибут заставляет Link отправлять свойство href
своему дочернему элементу.
import { Button } from 'semantic-ui-react';
import Link from 'next/link';
const Example = () => (
<Link href="https://stackoverflow.com/" passHref={true}>
<Button>StackOverflow</Button>
</Link>
)
export default Example;
2. Решение для HTML элементов (отличных от тега A)
В документации Next. js вы можете найти следующие предложения:
Внешние URL-адреса и любые ссылки, которые не требует навигации по маршруту с помощью / страниц, не требует обработки с помощью Link; вместо этого используйте тег привязки для таких случаев.
И я должен написать, что это очевидно, поэтому в этом случае, если вам нужно использовать любой другой тег, например, кнопку HTML, Вы должны использовать событие onClick
без компонента Link. Приведенный выше код будет выглядеть следующим образом:
const clickHandle = () => {
document.location.href = 'https://stackoverflow.com/';
}
const Example = () => (
<button onClick={clickHandle}>StackOverflow</button>
)
export default Example;
Я надеюсь, что такого рода объяснения и подход помогут тем, кто будет бороться с подобными заблуждениями.