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
240
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
500
CSSスプライトを動的生成して快適ソシャゲ開発
cancer
1
270
JavaScriptでKeyframeAnimationを作ってみた
cancer
1
90
第2回 Sass勉強会 in 社内
cancer
1
82
Other Decks in Technology
See All in Technology
例外の正しい扱い方 そのエラー try-catchして大丈夫?
jinwatanabe
3
370
生成AIのテナント制御とシャドーMCP対策 | AIを"止めずに"、情報を守る
yukun
0
130
PfEingのアプローチで働こう
rindrics
0
200
作品が生態系になった ─ Mini Tokyo 3D から世界へ
nagix
0
130
2026-09-10 【Snowflake World Tour Tokyo 2026】dbt Core と Snowflake で実現する多層的なデータガバナンス / Multi-Layered Data Governance Powered by dbt Core and Snowflake
civitaspo
0
240
20260906 「AWS運用入門」著者が教える、運用業務への生成AI活用入門
masaruogura
0
250
『止めない』を設計する — 制約の中で、事業の根幹を支える判断
hiroyaterui
0
230
Bet AI Day 2026丨バクラク Autopilot、業務システムの再設計
layerx
PRO
2
1.6k
AIに丸投げしないトイル削減 / Eliminating Toil Without Leaving It All to AI
kohbis
4
1k
Webとヘルスデータ
yukukotani
1
200
多摩川(.dev)ランニング入門 / Tamagawa.dev#3
fujiwara3
3
410
[DroidKaigi 2026] Making UI specifications visible: Android UI development in the AI agent era supported by Compose Screenshot Testing and galleries
syarihu
0
610
Featured
See All Featured
What does AI have to do with Human Rights?
axbom
PRO
1
2.4k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
660
Ruling the World: When Life Gets Gamed
codingconduct
0
330
Context Engineering - Making Every Token Count
addyosmani
9
1.1k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
260
Raft: Consensus for Rubyists
vanstee
141
7.7k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
250
For a Future-Friendly Web
brad_frost
183
10k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
490
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.7k
Facilitating Awesome Meetings
lara
57
7.1k
Mobile First: as difficult as doing things right
swwweet
225
10k
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
ご清聴ありがとうございました