質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Material-UI

Material-UIは、Material Designを利用可能なオープンソースのReact向けUIコンポーネントキットです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

0回答

652閲覧

styled-componentsにspread operatorでcss propertiesを渡したい

tacro

総合スコア23

Material-UI

Material-UIは、Material Designを利用可能なオープンソースのReact向けUIコンポーネントキットです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2020/05/21 07:34

編集2020/05/21 07:50

#前提・実現したいこと
TypeScript, Material-UI, styled-componentsでReactの開発をしています。
Material-UIのオリジナルではuseStylesでスタイリングされているのを、styled-componentsに代替しようとしています。

#発生している問題
Drawerの実装で、spread operatorでcss propertiesをコピーしたいのですが、styled-componentsでうまく実装できません。
attrsの使い方が誤っているのかなと推測しているのですが、ドキュメントを見ても理解できませんでした。

#該当のソースコード
元のコード:

TypeScript

1const useStyles = makeStyles((theme: Theme) => 2 createStyles({ 3 drawerHeader: { 4 display: 'flex', 5 alignItems: 'center', 6 padding: theme.spacing(0, 1), 7 // necessary for content to be below app bar 8 ...theme.mixins.toolbar, 9 justifyContent: 'flex-end', 10 }, 11 }), 12 ); 13 14const SideDrawerHeader: React.FC = (props) => { 15 const classes = useStyles(); 16 const theme = useTheme(); 17 return ( 18 <div className={classes.drawerHeader}> 19 {props.children} 20 </div> 21 ); 22}

styled-componentsで代用しようとしているコード:

TypeScript

1const SideDrawerHeader: React.FC = (props) => { 2 const classes = useStyles(); 3 const theme = useTheme(); 4 return ( 5 <$DrawerHeader> 6 {props.children} 7 </$DrawerHeader> 8 ); 9} 10 11const $DrawerHeader = styled.div.attrs(props => ({ 12 ...props.theme.mixins.toolbar, 13}))` 14 display: flex; 15 align-items: center; 16 padding: ${props => props.theme.spacing(0, 1)}; 17 justify-content: flex-end; 18`;

#試してみたこと
この質問を見たりしたのですが、今回のケースでは参考にできませんでした。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/05/21 07:47

MaterializeとMaterial-UIは別物です
tacro

2020/05/21 07:50

タグを誤っておりました、修正いたしました!ご指摘ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問