Next.jsのコンポーネントにスタイルを適用する

date
Dec 28, 2022
repo_url
slug
nextjs-styling
status
Published
summary
type
Post
thumbnail_url
tags
nextjs
outer_link
デフォルトではstyled-componentsで定義したスタイルは、描画時にスタイルを作成し、classNameをコンポーネントに渡します。
コンポーネント内の特定のコンポーネントにスタイルを適用したい場合は、class属性つまりpropsに渡されるclassNameを任意のコンポーネントに渡します。
 
次のコードはnext/linkのLinkを使ったリンク用のコンポーネントにスタイルを適用する例です。
 
import { NextPage } from 'next';
import Link, { LinkProps } from 'next/link';
import styled from 'styled-components';

type BaseLinkProps = React.PropsWithChildren<LinkProps> & {
  className?: string;
  children: React.ReactNode;
};

// Next.jsのリンクにスタイルを適用するためのヘルパーコンポーネント
// このコンポーネントをsytled-comonentsで使用すると、定義したスタイルに対応するclassNameがpropsとして渡される
const BaseLink = (props: BaseLinkProps) => {
  const { className, children, ...rest } = props;
  return (
    <Link {...rest} className={className}>
      {children}
    </Link>
  );
};

const StyledLink = styled(BaseLink)`
  color: violet;
  font-size: 2rem;
`;

const SampleClassname: NextPage = () => {
  return (
    <div>
      <StyledLink href='/'>
        リンク用コンポーネントでスタイリングされたテキストです
      </StyledLink>
    </div>
  );
};

export default SampleClassname;

© Hayato Kamiyama 2023 - 2024 - Build with Next.js & Notion