12
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

setState関数をPropsで渡すときの型定義

Posted at

React.jsでもNext.jsでも、useStateを利用することがあると思います。

次のコードは、ボタンを押すとカウントアップできる例です。

// App コンポーネント
import React from "react";

const App = () => {
  const [count, setCount] = React.useState(0);

  return (
    <div>
      <h2>Current Count: {count}</h2>
      <button onClick={() => setCount(count + 1)}>Increment</button>
    </div>
  );
};

export default App;

ここで、何らかの事情で button 部分は別コンポーネントで実行したいとします。

仮に Button コンポーネントを作成してみます。

// Button コンポーネント
import React from "react";

const Button: React.FC<{
  count,
  setCount;
}> = ({ count, setCount }) => {
  return (
    <div>
      <button onClick={() => setCount(count + 1)}>Increment</button>
    </div>
  );
};

export default Button;

TypeScriptなので、Props の countsetCount に型定義を行います。

count に関しては元のままここでは number を定義しておきます。

React.FC<{
  count: number;
  setCount;
}>

問題は setCount の方です。

setCountは関数なので setCount: Function; でもいいですが、もっとしっかり定義する場合は次のようにします。

React.FC<{
  count: number;
  setCount: React.Dispatch<React.SetStateAction<number>>;
}>

これでsetState関数をPropsで渡す場合もしっかり型定義できました。

12
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?