Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
AngularJSで作ったアプリをReactで置き換えてみた
Search
cancer
October 29, 2014
Technology
230
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
AngularJSで作ったアプリをReactで置き換えてみた
cancer
October 29, 2014
More Decks by cancer
See All by cancer
JSXをモダンな感じで開発してみた
cancer
0
490
CSSスプライトを動的生成して快適ソシャゲ開発
cancer
1
270
JavaScriptでKeyframeAnimationを作ってみた
cancer
1
86
第2回 Sass勉強会 in 社内
cancer
1
75
Other Decks in Technology
See All in Technology
Data + AI Summit 2026 イベントレポート: 「AIがビジネスで意思決定するデータ基盤」へ
nek0128
0
280
壊して学ぶAWS CDK: そのcdk deployで消えるもの、残るもの
k_adachi_01
1
420
ruby.wasmとPicoRuby.wasmに対応した仮想DOMライブラリを作ってる話 #kaigieffect_kaigi
sue445
PRO
0
150
AI時代のYAGNI:「爆速で無駄になった機能」からの学び / 20260720 Naoki Takahashi
shift_evolve
PRO
3
350
関数型の考えを TypeScript に持ち込んで、テストしやすい純粋関数を増やす / Pure at the Core, Effects at the Edge: Bringing Functional Thinking into TypeScript
kaminashi
2
130
ファミコンでPHPを動かす / PHP on the Famicom
tomzoh
2
470
AI x 開発生産性を取り巻く予算戦略と投資対効果
i35_267
1
190
穢れた技術選定について
watany
18
5.6k
世界、断片、モデル。そして理解
ardbeg1958
1
130
AI、CDK と協働する Full TypeScript アプリケーション開発 / Full TypeScript Application with AI and CDK
geekplus_tech
2
400
マルチアカウント環境でSecurity Hubの運用、その後どうなった? / SRE NEXT 2026 miniLT会
genda
0
110
DatabricksにおけるMCPソリューション
taka_aki
1
280
Featured
See All Featured
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
810
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
201
75k
The Cost Of JavaScript in 2023
addyosmani
55
10k
Typedesign – Prime Four
hannesfritz
42
3.1k
How STYLIGHT went responsive
nonsquared
100
6.2k
The World Runs on Bad Software
bkeepers
PRO
72
12k
A Tale of Four Properties
chriscoyier
163
24k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.5k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.4k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
Transcript
AngularJS で作ったアプリ をReact で置き換えてみた
React
React XML like な構文(JSX) でComponent を定義 Component を組み合わせてView を構築 子Component
への値の受け渡しにはProps を使う ユー ザー の操作などで変化する値にはState を使う Component の各状態においてLifecycle Method が定義され てるのでよしなに使う
React を使うにあたって 1. Component を洗い出す 2. static に作ってみる 3. State
を使うべきところを洗い出す 4. State を置くところを決める 5. 子から親へデー タを戻す http://facebook.github.io/react/docs/thinking-in-react.html
Component
Component 実際に組み始める前にComponent の設計をする 折角なのでBEM で考えてみる .members -> <Members /> .members__list
-> <MembersList /> .members__list__row -> <MembersListRow /> .member-edit -> <MemberEdit />
Component JSX でXML のattribute のように書くことでComponent へ Props を渡すことができる BEM のclassName
をProps を使って渡してみる # <Members className="members" /> Members = React.createClass render: -> bemClassName = list: "#{@props.className}__list" <MembersList className={bemClassName.list} />
State
State getInitialState でstate を初期化 setState でstate の値を変更 componentDidMount でAPI リクエストをしてsetState
で更 新するといいらしい 子Component でstate の内容が変更されたら、 イベントで親 まで戻してあげる MembersList = React.createClass getInitialState: member: null componentDidMount: -> Api.members.get().done (member) => @setState member: member handleMemberEdit: (member) -> @setState member: member render: -> <MembersListRow member={@state.member} onMemberEdit={@handleMemberEdit} /> MembersListRow = React.createClass handleSave: -> @props.onMemberEdit(member) render: -> <MemberEdit
State 基本的にはState は多用せずにProps を使う 親からprops で与えられてたら、state じゃない 変化するものじゃなかったら、state じゃない 他のstate
やprops から処理されるものだったら、state じ ゃない http://facebook.github.io/react/docs/thinking-in- react.html#step-3-identify-the-minimal-but-complete- representation-of-ui-state
AngularJS vs React
DOM Component React のComponent の方が分割しやすい 責任範囲を小さくできるのでコー ドが煩雑化しにくそう 大きなComponent も作ろうと思えば作れるので設計大事 className(Props)
の引き回しでBEM が快適になる class="" に頑張って書かなくていいのは嬉しい やり過ぎると大変なことになりそうなのでほどほどに
State change ngScope が優秀 React.addons のReactlink を使うとtwo-way binding でき るらしい
Component のネストが深くなるとイベントで戻すのが辛く なる React.addons のclassSet を使うとAngular like にclassName の切り替えができる
まとめ
まとめ( 感想) AngularJS やBackbone(Marionette) と比べるとView のコンポ ー ネント化がしやすい BEM を始めCSS
の設計手法との相性も良さそうな印象 State 周りはReactlink を使うのが正解な気がする 他にもngAnimate 風にアニメー ションの指定ができるMixin があったり面白そう JSX の取っ付きづらさに慣れると使いやすい https://github.com/cancer/react-SavageApp
ご清聴ありがとうございました