takahirokomori0512
@takahirokomori0512

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

React propsの渡し方(初心者)

解決したいこと

ここに解決したい内容を記載してください。
Reactでモーダルウィンドウを表示させたく、記事をもとに作成しているのですが、
propsを渡す際に、エラーが発生しました。
解決方法を教えてください。

発生している問題・エラー

出ているエラーメッセージを入力
ERROR in src/App.tsx:4:17
TS7031: Binding element 'show' implicitly has an 'any' type.
    2 | import './App.css';
    3 |
  > 4 | function Modal({show}) {
      |                 ^^^^
    5 |   if (show) {
    6 |     return (
    7 |       <div className="overlay">
ERROR in src/App.tsx:23:8
TS2786: 'Modal' cannot be used as a JSX component.
  Its return type 'Element | undefined' is not a valid JSX element.
    Type 'undefined' is not assignable to type 'Element | null'.
    21 |     <div>
    22 |       <button onClick={() => setShow(true)}>Click</button>
  > 23 |       <Modal show = {show}/>
       |        ^^^^^
    24 |     </div>
    25 |   )
    26 | }


コード

import { useState } from 'react';
import './App.css';

function Modal({show}) {
  if (show) {
    return (
      <div className="overlay">
        <div className="content">
          <p>これがモーダルウィンドウです。</p>
          <p><button>close</button></p>
        </div>
      </div>
    )
  } else {
  }
};

function App() {
  const [show, setShow] = useState<boolean>(false);
  return (
    <div>
      <button onClick={() => setShow(true)}>Click</button>
      <Modal show = {show}/>
    </div>
  )
}

export default App;
0

1Answer

props渡す必要無いですね。
showの値がtrueの場合にモーダルを表示する処理の方が良いかと。
表示非表示の判断は呼び出し元のコンポーネントで。
{show && }
みたいな感じでいけますかね?

0Like

Your answer might help someone💌