v6로 올라오면서 Link와 관련된 개선점

1. <Link to> values

v5에서의 Link의 문제

v6에서의 바뀐점

1. v5의 문제 해결

2. ., .. 도입

2. Remove Link component props

import { FancyPantsLink } from "@fancy-pants/design-system";
import {
  useHref,
  useLinkClickHandler,
} from "react-router-dom";

const Link = React.forwardRef(
  (
    {
      onClick,
      replace = false,
      state,
      target,
      to,
      ...rest
    },
    ref
  ) => {
    let href = useHref(to);
    let handleClick = useLinkClickHandler(to, {
      replace,
      state,
      target,
    });

    return (
      <FancyPantsLink
        {...rest}
        href={href}
        onClick={(event) => {
          onClick?.(event);
          if (!event.defaultPrevented) {
            handleClick(event);
          }
        }}
        ref={ref}
        target={target}
      />
    );
  }
);

<aside> 💡 v5의 <Link> component prop

const FancyLink = React.forwardRef(({ navigate, ...props }, ref) => {
  return (
		// a tag 이외에 다른 tag를 랜더링해도 된다.
    <a ref={ref} {...props} onClick={handleClick}>💅 {props.children}</a>
  )
})

<Link to="/" component={FancyLink} />

</aside>

References