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

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

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

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

React.js

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

Q&A

解決済

1回答

1290閲覧

emotionを使用したstyled-componentsによる上書き

moose1

総合スコア16

TypeScript

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

React.js

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

0グッド

0クリップ

投稿2022/06/26 14:54

reactによるフロントエンド開発をしています。
emotionのstyled-components記法を用いているのですが、他のコンポーネントでstyleを上書きしても反映されません。ソースコードは以下になります。

上書きされるコンポーネント

typescript

1import React from 'react' 2import { Button } from '@mui/material' 3import styled from '@emotion/styled' 4 5type Props = { 6 children: string; 7 onClick: VoidFunction; 8} 9 10const BaseButton: React.FC<Props> = (props) => { 11 const { children, onClick} = props; 12 13 return ( 14 <StyledButton 15 variant="outlined" 16 onClick={onClick}> 17 {children} 18 </StyledButton> 19 ) 20} 21 22export default BaseButton 23 24const StyledButton = styled(Button)({ 25 margin: '15px', 26 fontSize: '1.6em', 27 })

上書きをしているコンポーネント

typescript

1import React from 'react' 2import styled from '@emotion/styled' 3import BaseButton from '../Atom/Button/BaseButton' 4import { useNavigate } from 'react-router-dom' 5 6const MainButton = () => { 7 8 const navigate = useNavigate() 9 const toList = () => {navigate('/List')} 10 11 return ( 12 <div> 13 <SButton size="large" onClick={toList}>リスト</SButton> 14 </div> 15 ) 16} 17 18export default MainButton 19 20const SButton = styled(BaseButton)({ 21 color: 'black', 22})

この場合、ボタンの色が黒色に変わらず、元のコンポーネントのボタンが表示されます。
ご回答のほどよろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

自己解決

BaseButtonコンポーネントのStyledButtonにclassNameをつけたことで解決できました。
https://emotion.sh/docs/styled

投稿2022/06/27 16:03

moose1

総合スコア16

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問