Next/Link обновляет страницу при неглубокой маршрутизации
у меня есть
Link
:
<Link href={href} passHref shallow>
<StyledLink
$active={active}
$disabled={disabled}
onClick={() => passBackNumber(number)}
>
{number}
</StyledLink>
</Link>
куда
StyledLink
мой
styled.a
элемент и
onClick
передает номер, который был только что нажат. Я нашел информацию, что если вы хотите использовать
<Link/>
+
styled-components
вам нужно использовать
passHref
. Но проблема в том, что я указал
shallow
, страница все еще обновляется. Я только хочу, чтобы URL-адрес изменился и вызвал обратный вызов. Что я сделал не так?
1 ответ
Способ, которым я справляюсь с этим типом реализации, заключается в использовании расширенных стилей для styled-components. Я делаю стилизованный компонент, привязанный к Next
<Link>
:
const StyledLink = styled(Link)`
align-items: center;
display: flex;
justify-content: space-between;
a, a:focus, a:visited, a:hover {
color: black;
text-decoration: none;
}
`
В функции рендеринга я буду применять
onClick
событие непосредственно во вложенном
<a>
тег такой:
<StyledLink href="#">
<a onClick={ () => passBackNumber(number) }>
</StyledLink>
В зависимости от того, какую версию Next вы используете, вам может не понадобиться
passHref
или же
shallow
больше. Next 12.1+ с Webpack 5+ теперь может использовать собственную компиляцию Rust на стороне сервера с
swc
& styled-components (подробнее здесь ).