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

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

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

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

TypeScript

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

React.js

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

Q&A

解決済

1回答

4931閲覧

子コンポーネントへのアイコンの渡し方

hyamazaki

総合スコア1

Material-UI

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

TypeScript

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

React.js

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

0グッド

1クリップ

投稿2020/06/19 08:32

前提・実現したいこと

React 初心者です。
React + TypeScript の環境で、Material-UI を使用していますが、
親のコンポーネントから子コンポーネントに表示するアイコン指定の方法がわかりません。

発生している問題・エラーメッセージ

以下ソースにおいて、MenuItemProps では iconType の型に何を指定すればよいのでしょうか。

該当のソースコード

// 親コンポーネント

import InfoIcon from "@material-ui/icons/Info"; ... function MyAppBar() { ... <MenuButton iconType={InfoIcon}> ... }

// 子コンポーネント MenuButton.tsx

type MenuItemProps = { iconType?: object; } function MenuButton( props: MenuItemProps ) { const Wrapper = props.iconType; return ( <React.Fragment> {<Wrapper />} </Rect.Fragment> ); }

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

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

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

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

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

hoshi-takanori

2020/06/19 11:23

InfoIcon の型は OverridableComponent<SvgIconTypeMap<{}, "svg">> というもののようですが、こんなの書きたくない (実装詳細っぽいし) し、iconType に Material UI 以外のものも指定できるようにしたいと思ったら React.createElement の最初の引数になりうる型を列挙する必要があるし、any かなぁ。 または、icon として JSX.Element を指定するようにするか…。
hyamazaki

2020/06/19 11:43

回答ありがとうございます。 any 指定で良いのですね。 TypeScript なので、厳密に型定義が必要なものだとばかり思っていました。
hoshi-takanori

2020/06/19 11:51

any はもちろん妥協ですけど、仕方ない場合もあるってことです…。
hyamazaki

2020/06/19 11:57

解決済みにするために、回答にコメントしていただけないでしょうか。
guest

回答1

0

ベストアンサー

InfoIcon の型は OverridableComponent<SvgIconTypeMap<{}, "svg">> というもののようですが、こんなの書きたくない (実装詳細っぽいし) し、iconType に Material UI 以外のものも指定できるようにしたいと思ったら React.createElement の最初の引数になりうる型を列挙する必要があるし、any でしょうか。
参考: https://stackoverflow.com/a/57412808/1019868

投稿2020/06/19 12:00

hoshi-takanori

総合スコア7895

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問