React.js
環境構築
コンポーネント
Stateのリフトアップ
概要
- 子コンポーネントで行ったStateの変化を親コンポーネントに伝えるテクニック
- 親コンポーネントで作った
useState
の状態変更関数を子コンポーネントに渡す感じ
Single File Component
概要
- Vue.jsのようにひとつのファイルにコンポーネントに関する要素を全て含ませるという設計戦略
- ↓のイメージ
// インポート
import React from 'react';
import styled from 'styled-components';
// スタイル定義
const Card = styled.div`
border: 1px solid #ddd;
border-radius: 4px;
padding: 16px;
margin: 8px;
`;
const Name = styled.h2`
color: #333;
font-size: 18px;
`;
const Email = styled.p`
color: #666;
font-size: 14px;
`;
// ロジック
const formatEmail = (email) => email.toLowerCase();
// コンポーネント
const UserCard = ({ name, email }) => {
const formattedEmail = formatEmail(email);
return (
<Card>
<Name>{name}</Name>
<Email>{formattedEmail}</Email>
</Card>
);
};
export default UserCard;
- 大抵のreactプロジェクトは責務ごとにファイルを分割することが多い
- 関連コードが1つのファイルに集約されるので、コンポーネントの全体像が把握しやすくなる
- したがって、保守性も高くなる
- ただし、コンポーネントのサイズや関連するデータが増えると見通しが一気に悪化する
- 小さなコンポーネントを維持できる、そもそもプロジェクト自体が小さいなどであれば選択肢にあがる
抜粋: 経年劣化に耐える ReactComponent の書き方
// (1) import層
import React from 'react'
import styled from 'styled-components'
// (2) Types層
type ContainerProps = {...}
type Props = {...} & ContainerProps
// (3) DOM層
const Component: React.FC<Props> = props => (...)
// (4) Style層
const StyledComponent = styled(Component)`...`
// (5) Container層
const Container: React.FC<ContainerProps> = props => {
return <StyledComponent {...props} />
}
ドメインモデルの取り扱い
参考資料
公式
ディレクトリ構成
- React アプリ構築するときのディレクトリ構成とかについて最近やっていること - Diary
- コンポーネントは compnents 以下にフラットに全部置くのが良い - Qiita
- React/Redux約三年間書き続けたので知見を共有します - エニグモ開発者ブログ
- Reactプロジェクトのファイル・フォルダ構成【Next.js対応】 | JS Challenge
- ディレクトリ構成ベストプラクティス ~ Angularアプリを作り続けてわかったこと / FRONTEND CONFERENCE 2019 - Speaker Deck
- React Hooks指向のfrontendのarchitectureを考える - mrsekut-p
- React Architecture Patterns for Your Projects
- Reactベストプラクティスの宝庫!「bulletproof-react」が勉強になりすぎる件
- SPA Componentの推しディレクトリ構成について語る
- React Best Practices and Security - TatvaSoft Blog
- How to Organize Your React + Redux Codebase | Pluralsight
- Atomic Designをやめてディレクトリ構造を見直した話|食べログ フロントエンドエンジニアブログ|note
- 5 React Architecture Best Practices for 2021
- ReactJs Project Structure and Final folder | Boilerplate Setup
- 【個人的】 React ディレクトリ構成 のベストプラクティス - Qiita
- Reactディレクトリ構成試行記. はじめまして、主にフロントエンドを担当しております、hokanの中川です。 | by hokan公式アカウント | Medium
- フロントエンド(React)のディレクトリ構成 - tosuke
- Style Guide | Redux
- Next.jsディレクトリ構成・設計再考(featuresが何を解決するか)
- Reactのディレクトリ構成どうしてる? - Qiita
- 【React/Vue.js】コンポーネント設計の(個人的)ベストプラクティス | Offers Tech Blog
設計パターン
- Reactで使う有名なコンポーネントデザインパターン - Qiita
- Reactのデザインパターン Compound Components - Qiita
- あなたが知っておくべき最高のReactデザインパターン
- 知っておきたいReactのデザインパターン
- フロントエンドのコンポーネント設計で気をつけているn個のこと - Uzabase Tech
- React Componentの実装ルールを決めてみた | Money Forward Engineers' Blog
- Reactのユニットテスト2021
- 一番文句言われなさそうな React コンポーネントの書き方
- 宣言的UIはReact Hooksで完成に至り、現代的設計論が必須の時代になる - Qiita
- ReactのComponent設計 - mrsekut-p
- Reactにおける責務(UI/ロジック)の切り分け - Leverages Tech Blog
- 経年劣化に耐える ReactComponent の書き方
ライブラリ
- Redux Toolkit | Redux Toolkit
- React Query
- Redux ToolKit
- Styled
- React Router Dom
- React Hook Form
- React Virtualized
- Emotion - Introduction