あべちゃんのフロントエンド塾~Youtube教室~
あべちゃんのフロントエンド塾~Youtube教室~
【Twitter:@abechan_front】
あべ@世界一優しいReact講師
twitter.com/abechan_front
ーーーーーーーーーーーーーーーーーーーーーー
プロフィール
ーーーーーーーーーーーーーーーーーーーーーー
■あべちゃん
本業:大手IT企業 新規事業開発部所属
副業:フリーランスエンジニア、大手プログラミングスクール元講師
個人事業:Reactに特化したオンライン塾を運営
ーーーーーーーーーーーーーーーーーーーーーー
扱う技術
ーーーーーーーーーーーーーーーーーーーーーー
HTML5/CSS3/SCSS/Javascript/TypeScript/React/Redux/Firebase/AWS
Пікірлер
かなり前の動画に質問失礼します。TypeScriptではなくJavaScriptでやっているのですが、useEffectでconsol.logで出力しようとすると、ページを読み込んだ時に2回出力されてしまいます。 動画と同じようにコードを打ってるはずなのですが…
ReduxToolkitの内容は非常に勉強になりました。MaterialUIのフォームの使用法も勉強になりました。 今までフォームをガリガリ作っていたのがアホらしくなりました。 無知は損ですね。 他の動画にないデプロイしたあと通常のレンタルサーバーにUPする方法などあると初心者は見応えあると思います。 この機能を使うにはNode.jsがサーバーサイドで必要とあれば初心者はありがたいです。 Next.jsを勉強した時にVercelにデプロイしか解説はなく、自分のホスティングにUPしたら動作しないという苦い経験もありました。 これからも頑張ってください。
調べてもよくわからなかったのでご教示ください。useContextは複数のコンポーネントでデータの共有ができるという理解ですが、AuthProviderの中のchildrenはどのような意味を持つのでしょうか?(children自体は型定義関係なく親コンポーネントのJSJ内の子要素をpropsで渡せるものという理解です。)
ご質問ありがとうございます! > AuthProviderの中のchildrenはどのような意味を持つのでしょうか? すでにご覧になっているかもしれませんがchildrenに関しては、以下のブログが参考になると思います! choippo.com/react-component-children/ 上記内容を踏まえた上で、今回contextを用いて複数のコンポーネントでデータの共有をするためには、それらのコンポーネントがAuthProviderにラップされている必要があります。AuthProviderにラップとは以下のように<AuthProvider>に囲まれている状態のことです。 <AuthProvider> <Component1 /> </AuthProvider> この際、AuthProvidrの中では、「children=<Component1 />」となり<Component1 />は<AuthContext.Provider>に囲まれる形になるため、contextで管理している値を受け取れるようになるということです。 まだ何かわからないことがあれば、お気軽にご返信ください!
@@youtube2603 ありがとうございます!理解できました!
第6回までで、お金を取られることとかってありますか?クラウドに接続しっぱなしでも取られませんか?
ご質問ありがとうございます! 今回の構成ではデプロイしたアプリケーションにアクセスがない限り課金はされません。 アクセスがあった場合にも何千、何万リクエストでなければたいした金額にはならないです。 しかし、課金が気になるのであれば、デプロイ完了後にamplify deleteコマンドを入力し、アプリを削除することをお勧めします!
はじめまして、色々動画をあげてくださってとても助かっています! 質問なんですが大容量データを扱う場合でもこの機能で作成できますでしょうか? ストレージを沢山使ってしまうのでaws使用料を気にしています。 本当はbigクエリーを使うべきかなと思うのですが作り方がわからないための質問になりますm(*_ _)m
現在もこのやり方でいいのでしょうか?
コメントありがとうございます😊 本動画の情報は古い可能性がありますので、現在は公式ドキュメント等の情報を参考になさるのが良いかと思います🙇♀️ firebase.google.com/?hl=ja
終わった! 滅茶苦茶難しい!けど、できるようになりたい! todoやって、これあと数回やってみます!!!!!!
コメントありがとうございます!! ファイトです👏
初心者にやさしい、わかりやすい動画をありがとうございます!無事、実装ができました!
コメントありがとうございます! 実装完了おめでとうございます👏
めちゃくちゃわかりやすいです、勉強になります。 今、IPカメラからAWSのS3経由でWebに出す勉強をしているのですがどうしてもわかりません。今後KZreadで出す予定ありますでしょうか?(ネットで検索しても全然出てこなく。。。
コメントありがとうございます! 今のところは予定がなかったのですが、余裕のある時に、おっしゃったような事ができないか検討してみます👍
@@youtube2603 ありがとうございます!大変助かります💦
次回も楽しみにしてます🤲
ありがとうございます!! 次回はまた3週間後に配信予定ですので、今しばらくお待ち下さい🙇
関数コンポーネントとクラスコンポーネントの違いってなんですか…??
簡単に言いますと、クラスの形でコンポーネントを定義するのか、関数の形でコンポーネントを定義するかの違いになります。「React 関数コンポーネント クラスコンポーネント 違い」のようなキーワードで探したらこの様な記事も出てきましたので、ぜひ参考にしてみてください👍 fullstacklife.net/programming/react/ract-class-function-component/
@@youtube2603 あっなるほど!定義の違いなんですね! サイトまでありがとうございます! しっかり見て見ます!
はい! また疑問点がありましたら遠慮なくご質問ください👍
@@youtube2603 ありがとうございます!! 頼りになります!!
こちらのチャンネル発見してよかったです!ありがとうございます!
こちらこそ、発見していただきありがとうございます😊
はじめまして コードをgithubで公開してませんか?result={calculator.showingResult}で表示されない為、確認したいです。 quiitaも見ましたが、また少し違うコードの為・・・
コメントありがとうございます! GitHubにレポジトリがありますので、ご共有いたしますね👍 github.com/Naoya-abe/calculator-app
@@youtube2603 早急な対応ありがとうございました!src直下のindex.jsでインポートの書き方が間違っていた為、ハマっていました・・・。import reducer from './redux/reducersをimport reducer from './redux/reducers/calculatorにして、calculatorから読み込むと間違って認識してました。失礼しました😭😭😭
無事に解決できたようで良かったです👏 importのミスは僕も良くやりますので、お気持ちわかります😅
最後の部分で、element.style.height = 'auto'に書き換えていますが、その直下のelement.style.height = '${element.scrollheight}px'は、無効化されるのでしょうか? 二重の定義に見えますが、element.style.height = 'auto' のみを最後に残すのでしょうか?
コメントありがとうございます! 今回の様に自動拡張するtextareaを作成するためには、書き換えるのではなく element.style.height = 'auto' element.style.height = '${element.scrollheight}px' の両方を記述する必要があります。 「element.style.height = 'auto'」だけでは自動拡張しませんし、「element.style.height = '${element.scrollheight}px'」だけではtextareaの伸縮の仕方が違和感のあるものになってしまいますので、両方を記述することで今回の様なtextareaを実装することができます👍
勉強になりました。次回TodoアプリへAWS Amplifyのハンズオンを待っております。
コメントありがとうございます! 楽しみにしててください!!
実際にS3などのサーバーにデプロイする際はapikeyはどのように保管するのがセキュリティ上良いでしょうか?
コメントありがとうございます! 以下長文となりますが、確認いただけますと幸いです!
今回の様なケースでは、基本的にはアプリケーションをビルドする際にapiKeyをアプリケーションに埋め込む形となります。ですので、セキュリティを高めるためのApiKeyの特別な保管方法というのはございません(私の勉強不足かもしれませんが...)。しかし、特別な保管方法がないからと行って何も対策をしないと、ご心配のとおりにApiKeyが流出し、APIの不正利用が起こる可能性がございます(見ようとすればGoogleDevToolsからApiKeyを見ることができるため)。そこで、その不正利用を防ぐ方法として、APIを叩くことのできるURLやIPアドレスを絞るという方法があります(こちらはApiKeyを発行するサイト等で設定できたりもするのですが、どこまで設定できるかはその運営元次第となります。GoogleMapのAPIに関してはこのあたりの設定ができたはずです!)。ですので、APIを利用してフロントエンドアプリケーションの機能を実現する際には、 APIを利用できるURLやIPアドレスを絞って運用上のリスクを減らすのだとイメージを持っていただけると良いと思います! ※S3はサーバーではなくストレージサービスの立ち位置となります
@@youtube2603 ご丁寧に回答いただきありがとうございました。 apikeyを含めたビルド済みのreactコード一式をS3にホスティングするケースだとバケットポリシーやおっしゃっている通りAPI側の設定でIPなどの制限するしかないですね。。 S3内にシークレットを保管できる場所があれば便利なのですが。 ※静的Webサイトホスティングでフロントエンドのサーバーという意味で使ってました。ややこしくてすみません、、
5:48 .env.localファイルを追加して検索しても400エラーが起きる方へ ローカルでアプリを立ち上げたままの状態で検索を行っても、envファイルが認識されていないため400エラー(写真の取得に失敗しました)になります。 一度ターミナルでctrl + Cでアプリを停止してから再度立ち上げ直すと、正常に検索できるかもしれません。
補足のコメント助かります!! ありがとうございます!
ありがとうございます! まさにそこでつまりました(笑)
ReduxToolkitって何?? という方はぜひ先に、以下の動画をご覧ください👍 kzread.info/dash/bejne/q4WulMmMgcy1iqQ.html
こちら第3回の配信時期は何時ごろになりそうでしょうか?
コメントありがとうございます😊 最近プライベートで忙しく更新できておりませんでしたが、6月中には第3回の配信ができる予定です👍
すみません、よろしければ教えてください。 右上にあるAWSアカウント表示のところに@ n-abeとなっていますが、どうやってこの状態にできるのでしょうか?アカウント番号だと何のためのアカウントかわかりにくいので悩んでいました。
コメントありがとうございます! そうですね、AWSのコンソール画面にログインする際に、アカウント番号ではなくアカウントエイリアスでログインしてはいかがでしょうか?そうすることで右上の表示が数字ではなくなるかもしれません! 一旦お試しいただき、また結果を教えてください🙇♂️
チュートリアルみても全然 uscallback 分からなかったのですごく助かりました。
コメントありがとうございます! お役に立てた様で幸いです!
コンピュータサイエンスの学生です 日本語を勉強しているので、日本語でのreactjsのビデオを探していたのです あべちゃんの動画がとても役に立ちましたし、分かりやすかったです 本当にありがとうございます
こちらこそです! ぜひ今後もご視聴をよろしくお願いいたします!
分かりやすかったです。ありがとうございました!
こちらこそ動画視聴&コメントありがとうございます!
丁寧な説明でわかりやすかったです!今のところ順調に進められてます!
ありがとうございます! 昔の動画では情報が少し古いところもありますので、適宜調査しながら進めていただけますと幸いです🙇♂️
@@youtube2603 承知しました!ありがとうございます✨
説明は、わかりやすいんですが、設定しているところの表示をもうちょっとズームで大きくして欲しい
コメントありがとうございます! 承知しました!今後作成する動画では、もう少しズームして画面録画をいたしますね👍
あべんちゃんさま Twitterの方でお仕事依頼のDM送らせて頂きました。もしお時間ありましたらよろしくお願いします。
TwitterのDMで返信させていただきましたので、ご確認よろしくお願いいたします🙇♂️
解説非常にわかりやすいです!ありがとうございます! 解説でコードが自動整形されているようですが, 必要な設定等を教えていただきたいです!
こちらこそありがとうございます!! コードの自動整形にはprettierというものを使っています。 設定については以下のサイトが参考になるのではないでしょうか? dev-yakuza.posstree.com/react/prettier/
@@youtube2603 ありがとうございます!! これからも更新楽しみにしています!!
▼自分用メモ import firebase from "firebase/app"; ↓ import firebase from "firebase/compat/app"; にしないとエラーでる
pixabeyのAPI URL打つと400エラーが出るんですけど同じ人いませんか?
400エラーということはリクエストの形式を間違えてAPIを叩いている可能性があります。 e-words.jp/w/400%E3%82%A8%E3%83%A9%E3%83%BC.html 本動画の投稿が1年以上前ということで、動画内の実装方法が現状のPixabayAPIの利用方法と異なる可能性がありますので、以下のPixabayドキュメントを見つつ渡すパラメーター等で間違いがないか確認をお願いします🙇 pixabay.com/api/docs/
@@youtube2603 ご返信ありがとうございます。調べたところ仕様が変わってるところはなく、単純に書き方が間違っていました。動画内で出てきている変数「params」を「param」としていたことが原因だったようなのですが、変数の命名が原因でこのようなエラーは起きるのでしょうか?
@@user-bc2zd8nh1t そうですね! axiosを用いてparameterを渡す場合には、objectのkeyとして「param」ではなく「params」といった名前を指定する必要があります。 github.com/axios/axios 本動画では、axios.get("endPoint", { params })と記述しているのですが、実はこれはaxios.get("endPoint", { params: params })の省略形となります。 JavaScriptではobjectのkeyとvalueが一致するときはvalueを省略できますので、今回のケースでは{ params }を{ param }にしてしまうとaxiosでparameterを渡す際の命名規則に反するため400エラーが返ってきたのではないかと考えられます🤔 qiita.com/zukkis/items/0508f47e0ee72102f8ba
すごくわかりやすいです! 今後も勉強させてもらいます!
ありがとうございます! 今後もよろしくお願いします🙇♂️
yarn add がnot foundと表示されるのですが必要なパッケージのインストールはその前に何か事前準備が必要なのでしょうか。現在firebaseでデプロイは完了していてVScodeと連携させようとしていますが上手くいきません。
コメントありがとうございます! > yarn add がnot foundと表示される こちらに関して「yarn」のコマンド自体のインストールは完了しているでしょうか?? もし完了していないようでしたら、こちらのサイトを参考にインストールしてみてください👍 classic.yarnpkg.com/lang/en/docs/install/#mac-stable
またエラー文を貼っていただくと、より正確に回答できるかなと思いますので、上記回答で解決できない場合は、エラー文を添えて再度ご質問いただければと思います🙇
@@youtube2603 ご返信ありがとうございます。やはりエンジニアに委託しようと思います。バックエンドの箇所が全く分かりません。。。もしよろしければお仕事の依頼などはできないでしょうか。
なかなか自分で実装するのは難しいですよね…😓 承知しました!一旦詳細をお聞かせいただいてから、お仕事を引き受けようか決めたいと思いますので、詳細をTwitterのDMからお教えください🙇♂️ Twitterアカウント @abechan_front
@@youtube2603 アベ様 大変申し訳ございません。同時にお仕事依頼のお願いをしておりまして別の方に依頼が決定してしまいました。 いきなりコメント欄でお仕事依頼しておいてこのようになってしまい申し訳ございませんでした。
Amplifyはほんと便利
本当に便利ですよね!!
実装で困っていたのですが、この動画のおかげで解決しました!内容も非常に分かりやすいです。ありがとうございますー
コメントありがとうございます! こちらこそ、はるにさんのお役に立てて嬉しいです😁
質問ですが、よく他の動画でJSXを使用する場合、拡張子.jsxが見受けられるのですが先生は.jsのままコードを書いているのは何か違いはありますか?
コメントありがとうございます! JavaScriptを使用している際には拡張子.jsxを使おうが拡張子.jsを使おうが、特に実装上は問題ないです。 しかし、チーム開発をしている際には以下のようなコーディング規約が設けられることがありますので、その際は現場のルールに従うようにするのが良いですね! - Componentを作る際には.jsxの拡張子を使いましょう等 - ロジックを作る際には.jsの拡張子を使いましょう等
とても役に立つ動画ありがとうございました! これからも参考にさせていただきます! 一点疑問点がありますので、お時間が有るときに教えていただきたいです。(初歩的な質問で申し訳ありません…) 現状だとログインした人が同じto do リストを操作することができるアプリだと思うのですが、 これをログインしたユーザー だけが自分のTo do リストを操作するような、各個人専用にすることはできますか?ユーザーの数だけTodoリストがある?というイメージです。 (トレロやNotionのように自分のTo doリストが他の人からみられないようにしたいです) やり方を調べてみたのですが、知識不足でうまく検索ヒットさせることができません… もし類似の方法や参考になる記事などがありましら、教えていただけないでしょうか?
コメントを頂きありがとうございます! > これをログインしたユーザー だけが自分のTo do リストを操作するような、各個人専用にすることはできますか? > ユーザーの数だけTodoリストがある?というイメージです。 こちらは十分に可能です! しかし、これらを実現するためには、以下の機能が最低限必要ではないかと思います。 ・ユーザーの認証機能 ・ユーザーを識別しながらのCRUD機能 上記機能はReactやReduxだけでは実現できませんので、FirebaseやAWSAmplifyといったサービスを勉強することで実現可能になります。公式のドキュメントのURLを貼っておきますので、一度覗いてみてください! Firebase firebase.google.com/?hl=ja AWSAmplify aws.amazon.com/jp/amplify/
理解しづらい単語の解説や、細かく参照して頂けるなど、とてもホスピタリティを感じます。 有料級の動画シリーズかと思われます。登録させて頂きました。ありがとうございます。
こちらこそありがとうございます! 今後もわかりやすい動画を意識してアップロードしていきますので、ご視聴よろしくお願いいたします🙇♂️
18:19辺りのところ、selectTaskにtasksを代入しておりますが、useSelectorを利用するという意味でselectTaskという名前にしたのでしょうか?これは一般的(ルール)なのでしょうか?
コメントありがとうございます! selectTasksの命名についてはおっしゃる通りです!しかし、これは特段ルールなどではございませんので、個人開発ならご自身の扱いやすいように、チーム開発の場合はチームのルールに従って開発を進めていただければと思います💻
@@youtube2603 はなやや4・
世界一わかりやすいです。ただ、少々マイクの音量が小さくて何回か聞き戻しが発生するのと、広告いった時の音量がでかくてビビりますw
コメント頂き本当に嬉しいです!ありがとうございます! それは申し訳ないです... gif2745さんのアドバイスを元に動画の改善を行ってまいりますので、今後もご視聴をよろしくお願いいたします!
I'm new to Firebase, Easy to understand! Catch you up later!
Thanks a lot!
こちらの動画もものすごくわかりやすく大変参考になりました、ありがとうございます! 一点だけなのですが、firebase.js内のimport部分でエラーが起こってしまい色々としらべると以下の記述でないと作動しないようでした! import firebase from "firebase/compat/app"; import "firebase/compat/auth"; import "firebase/compat/firestore";
貴重な情報のご共有感謝いたします!!
通っているブートキャンプのプロジェクトでReduxを使うことになり、色々なチュートリアルを漁ったのですが この動画の説明が一番わかりやすくしっくりきました!😭 ありがとうございます!!
そのように仰っていただき本当にありがとうございます😭 今後も頑張って動画作成を続けていきますので、よろしくお願いいたします!!
yarnのインストールのurl先のページのリンクがnot foundになってました。 ただ、インストールコマンドは動画で説明されていた通りだったので、概要欄の説明を更新いただけるといいかと思います。
ご指摘ありがとうございます! 更新完了しましたので、ご連絡になります!
動画を見終えて、Redux Toolkitの概要を知ることができました。 もう一度復習して理解を深めて、マイアプリを作れるように頑張っていきます。
お役に立てたようで幸いです! はい!今後も一緒に頑張っていきましょう👏
中々理解できない部分があり、質問させていただきたいです。 Context.Providerの必要性が分からなくなってきてしまいました。 動画の中のAuthContextを受け取りたい場所でimportし、useContext(AuthContext)とすればcreateContextで定義した値を取得できるかと思うのですが、 なぜContext.Providerは必要なのでしょうか? 単純に公式のドキュメントで、そのように利用することが推奨されているからって感じなのでしょうか。 調べても中々分からず質問させていただきました。 理解度低く申し訳ありませんが、お手隙でご回答いただけますと幸いです!
動画のご視聴ありがとうございます! Providerの存在意義としては2点あると考えておりますのでご確認をお願いいたします! 1点目は「defaultValueでは指定できない(または実装がめんどくさい) 値をConsumer側に渡したい時に、Providerで値を更新してConsumerに渡すことができる」です。 今回の場合は、「useStateで作成した値と関数をConsumer側に渡したかった」となります。この場合以外にも、「バックエンドとhttp通信を行った結果をConsumer側に渡したい」といった時にも使えますね! というのも、Consumer側で受け取るvalueは、ツリー内の上位で一番近いこのContext用のProviderの value プロパティと等しくなるからです。 そして、このContext用のProviderが上位に存在しない場合、引数の value は createContext() から渡された defaultValue と等しくなるように作られています。 また、2点目としては「値を渡すコンポーネントの範囲を明示化できるところ」です。 「値を渡すコンポーネントの範囲を明示化できる」ことで、それらのコンポーネント内でしかcreateContextで生成された値を共有しないなどの共通認識をチーム内で持てますので、チーム開発を円滑にすすめることができます。 以上、ご回答となりますが、あくまでこれは私個人の考えですので、1つの参考意見としてご認識ください!
@@youtube2603 お忙しい中ご回答いただきありがとうございます! 1点目につきましては、まだConsumerの方について理解が浅いので、これから学んで行こうかと思います。 2点目につきましては、現状でも、とてもしっくりきました! とても勉強になりました。ありがとうございました!
firebaseのハンズオン、楽しみながら完走できました! 有益な情報をありがとうございました。 1点ご質問なのですが、 ログインしていないユーザをアプリ画面('/')からログイン画面('user-auth')に強制的に遷移させる処理で、 一瞬だけとはいえアプリ画面('/')が表示されてしまうため、これを防いで見栄えとセキュリティを良くしたいと思っています。 しかしやり方がよく分からず、もしアドバイスがあればお聞きしたいです。
動画のご視聴ありがとうございました! 返信が遅くなり申し訳ありません... このコメント欄で詳細をお伝えするのは難しいので、簡単にご共有させていただきますね! > 見栄えとセキュリティを良くしたい 様々な手法が考えられますが、今パッと思いついたものの中で比較的簡単そうなものをお伝えすると、モーダルを用いる方法があります! ページが開かれた際に、loadingアイコンを持ったモーダル(背景色を濃くする)を開くことをデフォルトにしておき、ユーザの認証が確認できたら、そのモーダルを取り払いアプリのTODO画面を表示するという方法です。ぜひお試しいただき、またご連絡をください! モーダルについてはreact-modalがおすすめです! github.com/reactjs/react-modal/blob/master/README.md
TypeError: Cannot read property 'apps' of undefined このエラーが出るんですけどどうしたらよいですか?
ご視聴ありがとうございます! 「TypeError: Cannot read property 'apps' of undefined」で検索したら以下のような記事が出てきました。 ja.stackoverflow.com/questions/81163/firebase%E7%92%B0%E5%A2%83%E6%A7%8B%E7%AF%89%E3%81%A7typeerror-cannot-read-property-apps-of-undefined%E3%81%A8%E5%87%BA%E3%82%8B 上記記事によると、firebase SDKのバージョンが9以上ですと、初期化の方法が変わっているみたいです。 対応方法としては ご自身の追加したfirebaseのversionを確認した後に以下のどちらかのアクションが取れます! ぜひお試しいただき、またご連絡いただければと思います! - firebase SDKのバージョンを9未満にする(私はv8.2.3でした) 本アプリに追加しているパッケージのバージョン一覧確認:github.com/Naoya-abe/toolkit-todo/blob/firebase/package.json - 9以上での初期設定方法を行う 参考サイト:lupas.medium.com/firebase-9-beta-nuxt-js-981cf3dac910
@@youtube2603 返信ありがとうございます!試してみます!
わかりやすい動画をありがとうございます。計算機を最後まで作成したのですが、最後の動作確認ができませんでした。 こんなエラーが出ます。 Error: Actions may not have an undefined "type" property. You may have misspelled an action type string constant. onClick /App.jsx:19 16 | <div className="number"> 17 | <div className="upper"> 18 | <Button text={"7"} onClick={() => onNumberClick(7)} /> > 19 | <Button text={"8"} onClick={() => onNumberClick(8)} /> | ^ 20 | <Button text={"9"} onClick={() => onNumberClick(9)} /> 21 | </div> 22 | <div className="middle"> 自分で確認をしたいのですが、Githubとか、どこかにソースはありますか?
こちらこそ動画をご視聴いただきありがとうございます! 以下、ソースコードのリンク先となりますので、ぜひ覗いてみてください! github.com/Naoya-abe/calculator-app
@@youtube2603 GITリンクありがとうございました。無事動作しました!
おめでとうございます👏 今後も一緒に頑張っていきましょう!
actionやreducerって何??という方は、先に以下の動画をご視聴ください! 本動画の理解度が2倍になること間違いなしです!! ↓【Redux入門】#1 ~Reduxの理解~↓ kzread.info/dash/bejne/fqGo1Jqhnbvcmpc.html
以前react.Fragmentではなく空タグ(<></>)で囲って返しているコードを見かけましたが、両者で違いはあるのでしょうか?
コメントありがとうございます! React.Fragmentの短縮記法が<></>になりますので、両者で大きな違いはありません。 以下、参考ページになりますので、ぜひご覧ください ja.reactjs.org/docs/fragments.html#short-syntax
いつも動画配信ありがとうございます。 銀行に例えた図がとてもわかりやすく助かりました ! 似たようなものを検索して探してみます。 何度も見て流れを理解していきたいと思います。 ありがとうございます。
コメントありがとうございます! そう言っていただきとても嬉しいです! 解説している技術は異なるのですが、useReducerについて英語版での解説動画の中に、同様の銀行の例えがありましたので共有です。kzread.info/dash/bejne/dqGs3KqDY8_XZrg.html