タグ

reactに関するoinumeのブックマーク (64)

  • ダイアログもアラートも、Reactで子コンポーネントの開閉管理を実装する | フューチャー技術ブログ

    Reactでは、画面に関わる表示の制御はかならず何かしらのステート管理を行いそれで行います。ダイアログの場合は開閉をuseState()で作ったフラグで管理するみたいな感じです。 たとえば、ウェブブラウザのJavaScriptから呼べるalert()やconfirm()は、関数を呼び出せばダイアログが表示されますし、ダイアログが閉じたら処理が戻ってきます。confirm()ならユーザーが選択したものと一緒に返ってきます。標準の<dialog>タグが今時ですが、このタグはDOMインスタンスのshowModal()やshow()メソッドを呼ぶ必要があります。命令志向ですね。 一方、Reactでダイアログを実装する場合を考えます。メソッド呼び出しが直接扱えればシンプルですが、Reactでは基的にステート管理でやりましょう、というのが流儀です。useImperativeHandle()を使うとか

    oinume
    oinume 2024/06/23
    コンポーネント設計の教材に良い
  • React Libraries for 2024

    Follow on FacebookReact has been around for a while. Since then, a well-rounded yet overwhelming ecosystem of libraries evolved around the component driven library. Developers coming from other programming languages or libraries/frameworks often have a hard time figuring out all the libraries for creating web applications with React. At its core, React enables one to create component-driven user i

    React Libraries for 2024
  • 一言で理解するReact Server Components

    この記事はReact公式の内容を翻訳・紹介するものではありません。筆者の解釈や理解を伝えるものであり、Reactの公式見解と一致しているとは限りません。あらかじめご了承ください。 皆さんこんにちは。最近Next.js 13.4がリリースされ、App Routerがstable扱いになりました。App RouterはReact Server Component (RSC) をふんだんに用いて構築されています。 React体でServer Componentがずっとalpha版なのにNext.jsでbetaとかstableとか言ってるのは何で? という問題も、React Canaryのアナウンスにより無事に解消されました。 React Canaryってなに? 先日React公式ブログでアナウンスされた、新しいリリースチャネルです。 筆者の理解による概要をお伝えすると、Canary版のReac

    一言で理解するReact Server Components
    oinume
    oinume 2023/10/02
  • Reactで再レンダリングを抑えるシンプルな方法

    はじめに 「React で再レンダリングを抑えたい...」となった場合、多くの人が React.memo や useMemo、useCallback などのいわゆる 「メモ化」 を思い浮かべることでしょう。 しかし、そういった「メモ化」を用いなくても再レンダリングを抑える方法が実は存在しています。 今回はその代表的な例を2つ紹介していきたいと思います。 よくある例 まず例として、以下のような 「パフォーマンスに問題を抱えたコンポーネント」 を考えてみましょう。 import { useState } from "react"; export default function App() { let [color, setColor] = useState("red"); return ( <div> <input value={color} onChange={(e) => setColo

    Reactで再レンダリングを抑えるシンプルな方法
    oinume
    oinume 2023/09/01
  • Hooks時代のReactライフサイクル完全理解への道

    はじめに これはクラスコンポーネントのライフサイクルを理解した上で、それに対応するように関数コンポーネントのライフサイクルを理解しようという試みです。 厳密にはReactのライフサイクルはクラスコンポーネントと関数コンポーネントそれぞれで違う概念を持っているようで、それぞれのライフサイクルに紐付けて考えるという行為自体がナンセンスな可能性がありますが、理解の手助けになれば幸いです。 そのため、なるべくわかりやすくするために、厳密でない言い方をすることがあります。ご了承ください。 もし明らかにまずい言い回し、もしくは間違って認識しているものがある場合はコメントにて教えていただけると嬉しいです。 モチベーション 僕はReactの経験がクラスコンポーネントはちょっとだけ書いたことがあるくらいで、ほぼ関数コンポーネント×hooksから入ったようなもなのでいまいちライフサイクルが理解できていない。

    Hooks時代のReactライフサイクル完全理解への道
    oinume
    oinume 2023/06/22
  • React.js: The Documentaryで振り返るReact普及の歴史 - laiso

    www.youtube.com Meta(当時Facebook)のReact Core Teamの主要人物たちに直接インタビューしたドキュメンタリー動画 タイムライン 2012年まで 最初はFacebook社内でReactが普及するまでの道程。 当時世の中的にはクロスブラウザの解決策はjQueryに落ち着き、モバイルアプリ化の流れでAPIサーバーとViewは切り離される傾向にあり、JavaScriptのクライアントサイドで大きいアプリケーション作るためにMVCフレームワークとか取り入れないとね〜という雰囲気だった Facebook社はマーク・ザッカーバーグがHTML5に賭けていた頃*1にBolt.jsというFacebook版Backbone.jsを開発していた 広告プラットフォームのコードは当時Bolt.jsを中心に構成されていたが、Jordan Walkeが関数型プログラミングのアイデア

    React.js: The Documentaryで振り返るReact普及の歴史 - laiso
    oinume
    oinume 2023/06/03
  • 【React】デバッグするためのTips - Qiita

    デバッグをうまくできるかどうかで開発速度が大きく変わります。 ReactでデバッグするためのTipsをまとめました。 console出力 jsx内にconsoleを仕込む console.log()はvoidを返します。 OR演算子でつないであげればJSX内にconsoleを仕込むことができます。 const Component = ( <> {console.log("hoge") || (<Hoge />)} </> );

    【React】デバッグするためのTips - Qiita
  • React18でのStrictモードとuseEffectの挙動 - すな.dev

    ReactのStrictモードがv18になって挙動が追加された。 追加された挙動となぜそれが追加されたのかということについて調べた。 せっかくなのでここでまとめておく。 わりと調べて書いたつもりですが、もし内容が間違ってたら教えてください。 Strictモードとは ここでは簡単にStrictモードについておさらいしておく。 以下がドキュメント。 (基的にここで書いてある内容はドキュメントとReact18のDiscussionsに記載してある。どちらも最後に参照先のURLを記載しておく。) Strictモードとは、アプリケーションに存在している様々な潜在的な問題点をwarningとして出してくれるもの。 重要なことはStrictモードによって影響があるのは開発モードのみであって、番環境ビルドでは何も影響がないということ。 したがって、Strictモードによるwarningがあったとしても

    React18でのStrictモードとuseEffectの挙動 - すな.dev
  • React.ComponentProps 型を積極的に使おう

    Atomic Design でいう Atoms に相当する、汎用コンポーネントについての小話です。次の様に Props 型定義を用意し、解説している記事をよく見かけます。<input />タグを使わずコンポーネント化している理由は style を施すためかと思いますが、このコンポーネントが受け取れる Props は限定的で、メンテナンスコストが高いためお勧めできません。 type Props = { value: string; onChange?: React.ChangeEventHandler<HTMLInputElement> onBlur?: React.FocusEventHandler<HTMLInputElement> } export const Input = ({ value, onChange, onBlur }: Props) => ( <input value=

    React.ComponentProps 型を積極的に使おう
    oinume
    oinume 2022/03/28
  • GitHub - timolins/react-hot-toast: Smoking Hot React Notifications 🔥

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - timolins/react-hot-toast: Smoking Hot React Notifications 🔥
  • Thinking in React – React

    React can change how you think about the designs you look at and the apps you build. When you build a user interface with React, you will first break it apart into pieces called components. Then, you will describe the different visual states for each of your components. Finally, you will connect your components together so that the data flows through them. In this tutorial, we’ll guide you through

    Thinking in React – React
    oinume
    oinume 2021/11/15
  • Reactベストプラクティスの宝庫!「bulletproof-react」が勉強になりすぎる件

    Reactアプリケーションのアーキテクチャの一例として公開されているGitHubリポジトリ「bulletproof-react」が大変勉強になるので、私自身の見解を交えつつシェアします。 ※2022年11月追記 記事リリースから1年ほど経過して、新しく出てきた情報や考え方を盛り込んだ続編記事を書いていただいているので、こちらも併せて読んでいただければと想います(@t_keshiさんありがとうございます!)。 ディレクトリ構造が勉強になる まずはプロジェクトごとにバラつきがちなディレクトリ構造について。 ソースコードはsrc以下に入れる bulletproof-reactでは、Reactに関するソースコードはsrcディレクトリ以下に格納されています。逆に言えば、ルートディレクトリにcomponentsやutilsといったディレクトリはありません。 たとえばCreate Next Appで作成

    Reactベストプラクティスの宝庫!「bulletproof-react」が勉強になりすぎる件
  • Why You Should Choose React Hook Form Over Formik and Redux-Form

    Over the years, I’ve been using React inbuilt forms, Formik, and Redux-Form. But I still found it challenging to handle events like onBlur, onChange, touch, and onSubmit. In my endeavor to find an alternative, I hit upon the React Hook Form library. First of all, to get a better understanding, let’s look at an example with React Hook Form and compare it with Formik and Redux-Form. Building a form

    Why You Should Choose React Hook Form Over Formik and Redux-Form
  • Create React AppからNext.jsへの移行事例紹介

    はじめに この記事は、筆者がOOPartsというプロダクトにおいて、Reactのアプリを 「Create React App」 から 「Next.js」 に置き換えた事例を記す内容となっています。 これまで 「0からのNext.jsアプリケーションの作成」 文脈における記事は多くありましたが、「Create React App」から「Next.js」という、 同じReact環境における移行記事 はそこまで多くなかったと認識しています。 ある程度育ちきっているプロダクトであれば、フレームワークごと移行することは中々困難になると思っていますし、それを成し遂げることはとてもチャレンジングなことです。その結果、事例としての大規模移行事例は中々存在しませんし、稀有なことだと思っています。 記事におけるOOPartsのNext.js移行に関する知見は、今後大きな移行する人たちの参考になれば良いと思っ

    Create React AppからNext.jsへの移行事例紹介
  • Reactを学ぶときに役立つ情報・本など

    React公式ドキュメントのチュートリアルは古くなっているので、TypeScriptReact Hooksで開発することも考えて参照するときにおすすめできるサイトを置いておく。 ほかにも有益な情報はあると思うが、あまり多すぎても大変なので、被りがなさそうかつ有益だと思っているリンクに絞っている。 2021年11月30日に編集 React公式ドキュメントのリニューアルが公開されるまでの繋ぎ。 New React Docs · Issue #3308 · reactjs/reactjs.org https://github.com/reactjs/reactjs.org/issues/3308 React公式ドキュメントがBeta版で公開されています。まずはこちらを参照するといいと思います!

    Reactを学ぶときに役立つ情報・本など
    oinume
    oinume 2021/07/29
  • GitHub - Fasosnql/use-suspense-query

    oinume
    oinume 2021/07/17
    Apollo ClientがSuspenseサポートしてないのでその対応
  • React Hooks vs. Redux: Do Hooks and Context replace Redux? - LogRocket Blog

    Editor’s note: This Redux vs. React Hooks comparison article was last updated on 23 June 2023 to consider how effective the React Redux Toolkit is for state management. Read more about Redux Toolkit here. Redux Toolkit simplifies the use of Redux in our application. However, by using the React Context API, in addition to the useContext and useReducer Hooks, which were introduced in React v16.8, we

    React Hooks vs. Redux: Do Hooks and Context replace Redux? - LogRocket Blog
  • すごいReactフック8選 - Qiita

    はじめに React.jsは現在、フロントエンド開発者に最も人気のあるJavaScriptライブラリです。Facebookが開発し、オープンソースのプロジェクトとして提供されているReactは、世界中の開発者や企業が使用しています。 Reactは、シングルページアプリケーションの構築方法を大きく変えました。その最大の特徴の1つがフックです。フックは2019年に導入されたもので、状態処理の時に、クラスコンポーネントの代わりに関数コンポーネントを使用できるようになりました。組み込みのフックに加えて、Reactは独自のカスタムフックを実装する方法を提供しています。 ここでは、アプリケーションやプロジェクトで使用できる、カスタムフックとその実装に関するお気に入りをいくつか紹介します。 1. useTimeout 宣言型アプローチでsetTimeoutを実装できます。まず、コールバックと遅延を受け取

    すごいReactフック8選 - Qiita
  • React 16.6の新機能、React.lazyとReact.Suspense を使った非同期処理 - Qiita

    React v16.6 から利用可能になったReact.lazyならびにSuspenseを早速使用してみました。 この機能の嬉しいところは非同期処理時におけるコンポーネントの扱いが非常に楽になるということです。 レガシーな実装方法 この機能が追加される以前は非同期で処理を行う際にローダーを表示して処理が終了したら結果を画面に表示するといった実装する時に、以下のような方法を採用していました。 処理中かどうか判断するステート isExecuting を用意する。 処理開始時にisExecutingをtrueにする isExecutingがtrueの時に「Please wait...」というテキストを表示 処理完了時に結果を表示 つまり、ステートが変更されたらコンポーネントをレンダリングするという、Reactの仕組みに則って実現させるという方法になります。 コードに起こすと以下のような感じです。

    React 16.6の新機能、React.lazyとReact.Suspense を使った非同期処理 - Qiita
  • React v18 での Effects に関する変更内容(予定)

    The Plan for React 18 のブログで React v18 の計画が発表され、アルファもリリースされました。当初の計画からは色々と変わりましたが、順調に進めば今年中に v18 がリリースされそうです。 このアルファリリースは、React 関連のライブラリ作者に試してもらってフィードバックもらうことを目的にしているため、現時点でプロダクトのコードに導入することは推奨していません。 アルファリリースなのでまだまだ破壊的な API も予想されます。 reactwg/react-18 フィードバックをもらう場所として、reactwg/react-18 という GitHub Discussions のためのリポジトリが作成されています。この Discussions は誰でも見ることはできますが書き込めるのは Collaborators になっている人のみです。そのため比較的議論の内容

    React v18 での Effects に関する変更内容(予定)