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

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

新規登録して質問してみよう
ただいま回答率
85.39%
Next.js

Next.jsは、Reactを用いたサーバサイドレンダリングなどを行う軽量なフレームワークです。Zeit社が開発しており、nextコマンドでプロジェクトを作成することにより、開発環境整備が整った環境が即時に作成できます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

TypeScript

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

React.js

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

Q&A

解決済

2回答

338閲覧

useStateの値を関数に渡すべきか?

yukikaze2234

総合スコア2

Next.js

Next.jsは、Reactを用いたサーバサイドレンダリングなどを行う軽量なフレームワークです。Zeit社が開発しており、nextコマンドでプロジェクトを作成することにより、開発環境整備が整った環境が即時に作成できます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

TypeScript

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

React.js

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

0グッド

1クリップ

投稿2024/06/11 01:03

実現したいこと

Next.js(React)について質問です。
useStateで管理している値を関数内で使用する場合、引数に渡すのと渡さないのはどちらがいいのでしょうか。
理由を交えて教えていただけると幸いです。

発生している問題・分からないこと

useStateの値を関数に渡すべきかの判断がわからない。

該当のソースコード

TypeScript

1import { useState } from 'react'; 2import { format } from 'date-fns'; 3 4export default function Page() { 5 const [date, setDate] = useState<Date>(new Date()); 6 7 //ここで引数にdate渡すべきか否か。 8 //あくまでも例です。 9 const stringConversion = () => { 10 const formattedDate = format(date, 'yyyy-MM-dd'); 11 return formattedDate; 12 }; 13 14 return ( 15 <div> 16 <p>{stringConversion()}</p> 17 </div> 18 ); 19}

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

インターネットで調べたが腑に落ちる情報がない。

補足

特になし

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

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

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

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

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

miyabi_takatsuk

2024/06/11 01:30 編集

一点ご質問があります。 date変数を、setDateにて変更する挙動はさせますか? (ソースコードは例かと思いますが、useStateを使用する意味が見られないような構文になっているため)
yukikaze2234

2024/06/11 01:41 編集

すみません、確かに意味がないコードにはなっています。 ただ、useStateのここでいうdateを関数に渡しても渡さなくても同じように動作すると思うのでどちらで対応するのがコードの書き方として正しいかを知りたいという意図がありました。 今回そのためのコード例をその場で記載しているため意味のないものになってしまいました。 ですので、コード自体には深い意図はありません。
miyabi_takatsuk

2024/06/11 02:13

わかりました。 なるたけ納得感ある回答目指して、回答していこうと思います。
yukikaze2234

2024/06/11 02:24

ありがとうございます! お手数をおかけしますがお願いします。
maisumakun

2024/06/11 04:45

stringConversionを関数にした意図はどのようなものでしょうか? (コード整理なのか、複数個所で使う前提なのか、子要素まで引き回すのかなど)
guest

回答2

0

BAに対立するような回答を書いちゃいますが、状態によって戻り値が変わるような関数はテスタブルじゃないので望ましくありません。
関数内で状態を利用したい場合でも、useCallbackを使うなりして依存対象の状態を明確にすべきです。

投稿2024/06/12 04:08

KazuhiroHatano

総合スコア7819

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

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

0

ベストアンサー

まず、大前提にあるのは、要件によるということです。
要件によっては、質問にありますとおり、引数として渡す必要が出てくる場合もありますし、
質問ソースコードにある通り、関数内で直接使用した方がいい場合もあるでしょう。

ただし、一つ大事な点としては、
引数にするということは、関数内スコープになるということです。
つまりは、引数で渡す場合は、
コンポーネントルートスコープのdate変数を保持した上で、別名引数による関数内スコープでの変数、dateInnerなどとするでは別処理を行いたい、といったことを可能にできます。
(つまりは、引数で渡した際に、引数には別値を代入したい、や、その上で、setDateでルートの変数に再セットして、別関数で更新された値を使いたい、など)

なので、上記のように、テクニカルなことをせねばならない、と言った時に、引数にするといいのかもしれません。
それ以外では、あまり引数にする必要性を感じる要件は私には浮かびません。

投稿2024/06/11 02:41

miyabi_takatsuk

総合スコア9555

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.39%

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

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

質問する

関連した質問