SlideShare a Scribd company logo
Reactに触れてみた
作成者:トビウオ
Reactとは?
• 三大Webフレームワークの一角(最大手)
ソース:npm trends
Reactとは?
JSX記法、コンポーネント指向、仮想DOM、単方向データフ
ロー、リアクティブプログラミング、関数型プログラミング
、Props、State、SFC、HOC、React Hooks、Redux……
• 新しい概念が多く、学習が大変そうなイメージ
• でもいきなり全部を学ぶ必要はない
• 関数型っぽくないアプローチでもコードは書ける
• 自作したTODOアプリを例に解説します
基本はコンポーネント
• Webページをパーツ(コンポーネント)に分けて考えたい
• パーツは再利用できるし、考える範囲も狭くなる
入力部分
出力部分
画面全体
一番外側もコンポーネント
• 全ての大本となるのがAppコンポーネント
• それ以下に他のコンポーネントがぶら下がる
export default class App extends React.Component {
public render() {
return (<>
<h1>タイトル</h1>
<p>文章</p>
<OutputTag />
</>);
}
} 定義
ReactDOM.render(
<App />,
document.getElementById('root') as HTMLElement
);
使用方法
普通のタグや
独自タグを使える
出力部分を作成しよう
• コンポーネントをclassで表現してみる
• まずは1つのタグだけ返すものを……
export default class OutputTag extends React.Component {
public render() {
return (
<h1>TODO一覧:</h1>
);
}
}
<OutputTag />
定義
使用方法 レンダリング結果
出力部分を作成しよう
• 独自タグの属性値はPropsから受け取れる
export default class OutputTag extends React.Component
<{list: string[]}> {
public render() {
return (
<h1>TODO一覧:</h1>
<ul>{this.props.list.map((w,i)
=>(<li key={i}>{w}</li>))}</ul>
);
}
}
<OutputTag list={dataList}/>
定義
使用方法
レンダリング結果
状態を管理しよう
• classで作るコンポーネントの場合、その状態をLocal
Stateと呼ばれる仕組みで管理する
• Propsと同様、ただの連想配列と考えればいい
export default class App extends React.Component<{},
{data: string}> {
constructor(props:{}){
super(props);
this.state = {data: “タイトル”};
}
public render() {
return (
<h1>{this.state.data}</h1>
);
}
}
状態を管理しよう
• PropsやLocal Stateは、中身を直接書き換えることができないこ
とに注意(Stateは「全上書き」だけできる)
data1: 3
data2: “abc”
Local State
data1: 4
data2: “abc”×
data1: 4
data2: “abc”
○
※赤枠と青枠は
違うインスタンス
入力部分を作成しよう
• 入力部分のコンポーネントにLocal Stateを作成する
• 入力部分で操作した際のイベントでStateを更新する
• 本当にこれぐらいしかやることがない
• 変更内容の伝播は、関数オブジェクトをPropsで渡して
バケツリレーさせて対処する
ソースコードは省略
どこまで説明したっけ?
• 仮想DOM→実装アルゴリズ
ムの話なので気にしなくても
一応書ける
• 単方向データフロー→Viewは
Modelの内容表示に徹し、
Modelの変更は別ルートで対
処する手法
• SFC、HOC、Hooks、Redux→関数型プログラミングで書く場合に
よく使う概念。ただしオブジェクト指向とノリがかなり違うので、
ついていけない場合は無難にclass Componentで書こう

More Related Content

PPTX
私が ASP.NET を選ぶ理由
PPTX
Bait and switch
PDF
Hello! intermediate language
PPTX
F# で ASP.NET
PDF
運用で爆発四散しないためのメタプログラミングとの付き合い方
PPT
ドメインロジックの実装方法とドメイン駆動設計
PPTX
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
PPTX
Reactのおさらい
私が ASP.NET を選ぶ理由
Bait and switch
Hello! intermediate language
F# で ASP.NET
運用で爆発四散しないためのメタプログラミングとの付き合い方
ドメインロジックの実装方法とドメイン駆動設計
jQueryの先に行こう!最先端のWeb開発トレンドを学ぶ
Reactのおさらい

Similar to Reactに触れてみた (20)

PPTX
React + Reduxで作る対話AI
PPTX
フロントエンドの技術を刷新した話し。
PDF
データベース勉強会 In 広島 mongodb
PPTX
つぶLT20121215
DOC
パッチを書いてみよう(第17回Nseg勉強会LT)
PDF
Intalio japan special cloud workshop
PPTX
Atomic design+vue
PPTX
Terraformで始めるInfrastructure as Code
PPTX
20100324 勉強会資料(ドメイン駆動)
PDF
TreeFrog Frameworkの紹介
PPT
Groovyコンファレンス
PDF
eZ Publish 2012年4月勉強会 - eZ Publish設計ベストプラクティス
PDF
YYPHP #13 初めてのコードレビュー
PDF
WebエンジニアがXR業界へ転職した話
PPTX
React componentのコンストラクタを追いかけて
PDF
iOSやAndroidアプリ開発のGoodPractice
PDF
RDRA DDD Agile
PPTX
Win/Mac/Android/iOS向け クロスプラットフォーム開発にXamarinが うまくハマりそうだった話
PDF
デ部会 プロトタイプ
PPTX
LogicFlow 実践編~LogicFlowでいろいろつくってみた ~
React + Reduxで作る対話AI
フロントエンドの技術を刷新した話し。
データベース勉強会 In 広島 mongodb
つぶLT20121215
パッチを書いてみよう(第17回Nseg勉強会LT)
Intalio japan special cloud workshop
Atomic design+vue
Terraformで始めるInfrastructure as Code
20100324 勉強会資料(ドメイン駆動)
TreeFrog Frameworkの紹介
Groovyコンファレンス
eZ Publish 2012年4月勉強会 - eZ Publish設計ベストプラクティス
YYPHP #13 初めてのコードレビュー
WebエンジニアがXR業界へ転職した話
React componentのコンストラクタを追いかけて
iOSやAndroidアプリ開発のGoodPractice
RDRA DDD Agile
Win/Mac/Android/iOS向け クロスプラットフォーム開発にXamarinが うまくハマりそうだった話
デ部会 プロトタイプ
LogicFlow 実践編~LogicFlowでいろいろつくってみた ~
Ad

More from iPride Co., Ltd. (20)

PPTX
Devcontainerのススメ(1)-Devcontainerとはどういう技術?-
PPTX
Vibe Codingを始めよう 〜Cursorを例に、ノーコードでのプログラミング体験〜
PPTX
色について.pptx .
PPTX
勉強会_ターミナルコマンド入力迅速化_20250620. pptx. .
PPTX
やってみた!OpenAI Function Calling 入門 .
PPTX
ECAモジュールの基礎調査.pptx 2025/05/30 の勉強会で発表されたものです。
PDF
Drupal10 Theme Starterkit入門.pdf .
PDF
サイクリングはいいぞ .
PDF
DDEVでらくらくDrupalローカル環境構築。2025/2/28の勉強会で発表されたものです。
PDF
DeepSeekの紹介( 2025/2/21の勉強会で発表されたものになります)
PPTX
Azure で RDB を作成してみた (2024/12/20 の勉強会で発表)
PPTX
vi / vim の基本コマンドについて(2024/12/20 の勉強会で発表)
PPTX
WebAuthnについてのざっくり説明[2024/10/25]の勉強会で発表されたものです。
PPTX
AWSの勉強、AWS S3編。2024/10/11の勉強会で発表されたものです。
PPTX
AWSの勉強リージョン編  2024/09/27の勉強会で発表されたものです。
PPTX
AWSサポートに学ぶ、エラーなどの報告をする際のコツ(2024/09/13 勉強会)
PPTX
最近のDrupalバージョンアップで起きた問題まとめ(2024/09/13 勉強会)
PPTX
AWSとIPv6 2時間目  2024/09/06の勉強会で発表されたものです。
PPTX
AWSとIPv6       2024/08/30の勉強会で発表されたものです。
PPTX
MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。
Devcontainerのススメ(1)-Devcontainerとはどういう技術?-
Vibe Codingを始めよう 〜Cursorを例に、ノーコードでのプログラミング体験〜
色について.pptx .
勉強会_ターミナルコマンド入力迅速化_20250620. pptx. .
やってみた!OpenAI Function Calling 入門 .
ECAモジュールの基礎調査.pptx 2025/05/30 の勉強会で発表されたものです。
Drupal10 Theme Starterkit入門.pdf .
サイクリングはいいぞ .
DDEVでらくらくDrupalローカル環境構築。2025/2/28の勉強会で発表されたものです。
DeepSeekの紹介( 2025/2/21の勉強会で発表されたものになります)
Azure で RDB を作成してみた (2024/12/20 の勉強会で発表)
vi / vim の基本コマンドについて(2024/12/20 の勉強会で発表)
WebAuthnについてのざっくり説明[2024/10/25]の勉強会で発表されたものです。
AWSの勉強、AWS S3編。2024/10/11の勉強会で発表されたものです。
AWSの勉強リージョン編  2024/09/27の勉強会で発表されたものです。
AWSサポートに学ぶ、エラーなどの報告をする際のコツ(2024/09/13 勉強会)
最近のDrupalバージョンアップで起きた問題まとめ(2024/09/13 勉強会)
AWSとIPv6 2時間目  2024/09/06の勉強会で発表されたものです。
AWSとIPv6       2024/08/30の勉強会で発表されたものです。
MySQLの文字コードと照合順序について 2024/07/05の勉強会で発表されたものです。
Ad

Reactに触れてみた