GithubHelp home page GithubHelp logo

toshi-ue / first-next-app Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 241 KB

React.jsを理解するためのNext.jsアプリ

Home Page: https://first-next-app-gray.vercel.app/

JavaScript 46.40% CSS 53.60%
nextjs react vercel

first-next-app's Introduction

Getting Started

今回は TypeScript を使用しない

First, run the development server:

npm run dev
# or
yarn dev

Open http://localhost:3000 with your browser to see the result.

You can start editing the page by modifying pages/index.js. The page auto-updates as you edit the file.

API routes can be accessed on http://localhost:3000/api/hello. This endpoint can be edited in pages/api/hello.js.

The pages/api directory is mapped to /api/*. Files in this directory are treated as API routes instead of React pages.

This project uses next/font to automatically optimize and load Inter, a custom Google Font.

Learn More

To learn more about Next.js, take a look at the following resources:

You can check out the Next.js GitHub repository - your feedback and contributions are welcome!

Deploy on Vercel

The easiest way to deploy your Next.js app is to use the Vercel Platform from the creators of Next.js.

Check out our Next.js deployment documentation for more details.

要約

  • データと処理(ロジック)を分けるのがリファクタリングの基本。これを守るだけである程度読みやすくて使いやすいコードになる

Chapter5

CSS Modules は便利
  • クラスの管理が楽、コードが簡潔
  • BEM は大変、コードが長い
  • 解決方法としていかのものもある
    • CSS in JS、styled-components や Emotion などのライブラリを使用
    • TailWindCSS のフレームワークなどを使用する
使い方
  • [好きな名前].module.css
  • クラスのみ使える(id などは使えない)
  • グローバル css は_app.jsでのみ読み込む(他のファイルで読み込み厳禁)

Chapter6

Link コンポーネント
  • ユーザー体験がより高速に
    • 逆に a タグを使用すると状態が初期化されてしまう

Chapter7

component を繰り返し使う方法

map を使う

繰り返しを使うメリット
  • コード量が少なくて済む
  • component を修正するときに 1 箇所を修正するだけで良い
HTML Entities
  • >アンドで始まり、セミコロンで終わるコード
  • jsx ではエスケープしてくれる
  • HTML Entities をただしく表示させるには
文字列中の HTML タグを HTML に変換する

【React】HTML 文字列を HTML に変換して表示する方法| Web エンジニア研究室

Chapter8

リファクタリング

jsx を使うメリット

VS Code が jsx に関する構文の補完を出してくれる

ディレクトリを src にまとめる
  • components, pages, styles ディレクトリを移動する(したほうが見やすい、人によって好みあり)
    • VS Code の場合は自動で import のパスを変更してくれる(してくれないときもあるのでその時は手動で変更する)

さらにファイルを component ごとにまとめる

  • Xxx.jsxXxx.module.cssが同一階層にたくさんあると管理が大変
    • Xxx.jsxXxx.module.cssXxxというフォルダーを作成しそこに移動する
    • そのままだとCaused by: No such file or directory (os error 2)というエラーが発生する。解決するためにはXxx.jsxindex.jsxに変更することでエラーが解決する。
    • indexという名前は js において非常に重要な名前。 名前をindexに置き換えることでディレクトリ名を参照したときにまずはindexを探してくれる。
      • このエコシステムを使用することでパスが長くなってしまうのを防いでくれる

相対パスから絶対パスに変更する

  • 相対パスより絶対パスの方が良さげ

  • 変更方法は next.js absolute pathで調べる

  • VS Code の基本設定では自動インポート補完は相対パスで補完されるので、絶対パスにしたい場合わざわざ修正しなければならず手間がかかる。

    • 絶対パスに変更する場合は VS Code の.vscode/settings.json"javascript.preferences.importModuleSpecifier": "non-relative"を追記する

Chapter12

useCallback, useEffect の第二引数の使い方

第二引数に値を入れることで、値が変更したことを検知して関数を実行して表示などを更新する。cleanupfunction が先行して実行されることに注意

Chapter13

useEffect を使用して string, Boolean を扱う

HTML タグでの値の変化による表示の制御は{}で囲い、三項演算子を使用する(jsx による制限)。 何も表示させたくない場合は null を代入する

export default function Home() {
  return (
    <>
      <button onClick={handleDisplay}>{isShow ? "ひひょうじ" : "ひょうじ"}</button>
      <button onClick={handleDisplay}>{isShow ? "表示する" : null }</button>
    </>
  );
}

Chapter14

immutables(不変変数), destructive method(非破壊メソッド)、スプレッド構文

JavaScript は現在破壊的メソッドが推奨されていない。 そのためスプレッド構文などを用いて対応する。

Chapter15

Custome Hooks(カスタムフック)の使い方、使い所
カスタムフック(ス)とは

カスタムフックとは、名前が ”use” で始まり、ほかのフックを呼び出せる JavaScript の関数のことです。 独自フックの作成 – React

カスタムフックスのメリット
  • コードを共通化できる
  • return 文までの記述が短くなる
  • 関心ごとを分離させることができる
カスタムフックスの使い方

フックの導入 – React

  • カスタムフックスは共通化(コードの再利用)に使える
  • カスタムフックスはuseXxxという名前で関数を作成する
  • hooksディレクトリを作成してそこにコードを記述することができる。ディレクトリ名はutilsなどいろいろあるのでチームの決まりに合わせる
  • フックスを使用する場合のルールがあるフックのルール – React
    • フックを呼び出すのはトップレベルのみ
    • フックを呼び出すのは React の関数内のみ
      • フックを通常の JavaScript 関数から呼び出さないでください
  • ファイルの拡張子は jsx のほうがわかりやすい(かも)
  • カスタムフックスとコンポーネントの使い分け
    • コンポーネントとロジックを一緒にしたいのであればコンポーネントとして作成する
    • コンポーネントとロジックを分けたい(UI は自由度を持たせたい)のであればカスタムフックとして作成する

Chapter16

State のリフトアップ(状態共通化)

状態共通化といってる 大きく 2 通り

Chapter17

useMemo, useRouter

useMemo は必要なタイミングで値の評価、再生成させるために使用する。 パフォーマンスの向上につながる可能性が高い。

useRouter で使用できるプロパティは以下 next/router | Next.js

first-next-app's People

Watchers

 avatar

first-next-app's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.