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

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

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

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

React.js

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

Q&A

解決済

2回答

3229閲覧

react componentsを引数で渡せない

yuyuyuooo

総合スコア23

TypeScript

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

React.js

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

0グッド

0クリップ

投稿2020/09/13 15:20

コンポーネントを引数に渡してあげたいのですがAuth(User)のところで以下のエラーになってしまいます。
どこを修正したらいいのでしょうか??
わかる方いましたら教えていただきたいです。
よろしくお願いいたします。

エラー内容 型 'Element' の引数を型 'Component<{}, {}, any>' のパラメーターに割り当てることはできません。 型 'Element' には 型 'Component<{}, {}, any>' からの次のプロパティがありません: context, setState, forceUpdate, render、2 など。
//Auth.ts export const Auth = (AuthComponent: Component) => { // 省略 return AuthComponent;
const User: FunctionComponent = () => { // 省略 }; export default Auth(User);

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

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

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

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

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

guest

回答2

0

ベストアンサー

React.Component型はReact.FunctionalComponent型の親ではありません。
なので、React.Component型の引数をもらう関数にReact.FunctionalComponent型のコンポーネントを渡すことはできません。
引数の型をJSX.Elementにする必要があります

投稿2020/09/14 04:16

Hogeike

総合スコア293

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

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

0

ソースがはしょられ過ぎてるので予想しか出来んけど以下の個所

export const Auth = (AuthComponent: Component) => {

React.Component(多分)を引数の型として定義しているんだから

export default Auth(User);

で渡すUserはただの関数じゃなくて

class User extends React.Component { render() { return <h1>のびたさんのえっち1</h1>; } }

のようにReact.Componentをextendsしたクラスを渡さないといけない

しかしFunctionComponentという関数名にしている事から本当に使いたい型はReact.ComponentじゃなくてReact.FCって事なのかな?
そこら辺のネット情報じゃなくて公式チュートリアル見つつ公式ドキュメントも見た方が良いですよ

投稿2020/09/13 15:41

hentaiman

総合スコア6426

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

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

yuyuyuooo

2020/09/13 15:47

返信ありがとうございます。 FCとFunctionComponentは同じ意味ですよね?
hentaiman

2020/09/13 15:50

冒頭に書いた通りソースはしょられ過ぎてて質問文からは同じかどうか分からない とりあえず回答の内容試してみる気はないですか
yuyuyuooo

2020/09/13 16:00

const User: FunctionComponent extends React.Component = () => { ってことですか?
hentaiman

2020/09/13 16:12 編集

class User extends React.FC= () => {
yuyuyuooo

2020/09/13 16:22 編集

,' が必要です。ts(1005) ',' が必要です React.FCの.と extendsで上記のエラーになります
hentaiman

2020/09/13 16:21

それは質問の本題と関係ありません。ただのsyntax errorなので正しい構文で書きましょう。typescriptは関係の無く、javascriptの基本です。 あと勝手にFCを小文字にしないでください。これもjavascriptの基本です。
yuyuyuooo

2020/09/13 16:24

中のhooks使っているところなどがエラーになるので無理そうです
hentaiman

2020/09/13 16:33 編集

切れ端のソースから見て予想した「質問者のやりたいであろう書き方」に対して、それを実現する為の問題解決法の回答しているだけなので、この回答を真似てもそれ以外の部分に問題があれば対応は出来ません。 飽くまでこの回答は質問内容に対しての解決策となります。 なので、 >中のhooks使っているところなどがエラーになるので無理そうです と言われても質問にも記載されていないので回答者には何も分かりません。 ある程度ソースをコンパクトにまとめてエラーを再現出来るだけのコードを記載して質問する事をおすすめします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問