2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

shouldForwardPropを調べたので備忘録としてまとめておく

Last updated at Posted at 2022-10-02

はじめに

material-uiの勉強をした時にサンプルコードにshouldForwardPropが良く出てきたので調べた結果を備忘録としてまとめておく。

shouldForwardPropとは?

shouldForwardPropとはstyled-componentsに対して渡されたpropsをDOM要素にまで伝播させるかを指示するために使用する機能のこと。

例えば以下のようにshouldForwardPropが未指定の場合、DOM要素までpropsが伝播されることはない
(デフォルトではpropsをDOMに伝播させないようになっている)

import styled from "@emotion/styled";

const MyBox = styled("div")`
`;

export default function App() {
  return (
    <MyBox prop1="hoge" />
  );
}

スクリーンショット 2022-10-02 10.02.39.png

しかし、以下のようにコードを変更する。

import styled from "@emotion/styled";

const MyBox = styled("div", {shouldForwardProp: (prop) => prop === "prop1"})`
`;

export default function App() {
  return (
    <MyBox prop1="hoge" />
  );
}

そうするとDOM要素までpropsが伝播されるようになる。
スクリーンショット 2022-10-02 10.07.53.png

最後に

コンポーネントを経由させずに直接DOMに渡したい時に使うのかな?という感じ。
ただmaterial-uiのサンプルコードではデフォルトではDOMに伝播させないにもかかわらず、敢えて prop !== "open" のように判定して使用しているのでどちらかというと明示性のために使用しているのかも。

詳しいかた教えていただけると幸いです。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?