Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
React入門
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
yayamura
December 25, 2017
Programming
390
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
React入門
yayamura
December 25, 2017
Other Decks in Programming
See All in Programming
Optunaを作ったときにやりたかったこと、その後 (2026/10/16, Optuna Meetup #3)
iwiwi
1
430
機械に任せるテスト、人が見るテスト ⽣成AIで引き直した、運⽤保守フェーズの線引き
dske104
0
190
SalesForceを内製化!? ~ HR事業を支える顧客管理基盤のインフラを大公開 ~
oku053
0
180
PumaからFalconに移行したRailsアプリケーションでの実践
falcon8823
0
170
AWS CDKのカスタムリソースでContinuum(旧Security Agent)を実装した話 | Implementing Continuum (formerly Security Agent) via AWS CDK Custom Resource
akihisaikeda
2
150
作れる、でも消せるか?──安全に「枯らして消す」機能削除術 / Drain, Then Delete
chobishiba
2
670
sbt 2.0: takeoff
eed3si9n
0
160
カツオ、ご期待ください
suneo3476
0
190
全ての永続トークンを、生まれる前に消し去りたい!
sylph01
2
900
AIに “答え“を書かせるのを やめてみた
___akari11
0
120
パスワード再設定メールのURLについて知っておこう
uyuki234
0
160
パズルゲームの作り方 / how to make puzzle games
kaityo256
PRO
2
290
Featured
See All Featured
Joys of Absence: A Defence of Solitary Play
codingconduct
1
550
Scaling GitHub
holman
464
140k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
730
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
330
Testing 201, or: Great Expectations
jmmastey
46
8.3k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.7k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
520
Reality Check: Gamification 10 Years Later
codingconduct
0
2.3k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
2
950
Rails Girls Zürich Keynote
gr2m
96
14k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
630
Odyssey Design
rkendrick25
PRO
2
870
Transcript
3FBDUೖ
3FBDUͱ w %FDMBSBUJWF એݴత w $PNQPOFOU#BTFE ίϯϙʔωϯτϕʔε w
-FBSO0ODF 8SJUF"OZXIFSF Ͳ͜Ͱ͑Δ 7JFXྖҬͷ+BWBTDSJQUϑϨʔϜϫʔΫ
%FDMBSBUJWF એݴత ϏϡʔͷඳըॲཧΛఆٛ͢ΔͷͰͳ͘ɺϏϡʔͷ༗ Γ༷Λએݴͱͯ͠ఆٛ͢Δɻ Ϗϡʔͷঢ়ଶมߋʹΑΔ࠶ϨϯμϦϯά3FBDU͕ ޮతʹ࣮ߦɻ એݴͱͯ͠ͷϏϡʔίʔυ͔Β࣮ߦ࣌ͷಈ࡞͕༧ଌ ͘͢͠ɺσόοά༰қɻ
$PNQPOFOU#BTFE ίϯϙʔωϯτϕʔε ΧϓηϧԽ͞Εͨίϯϙʔωϯτ͕ࣗͷঢ়ଶΛཧ͢ Δɻ ίϯϙʔωϯτ+BWBTDSJQUͰهड़͢ΔͷͰɺ)5.-ς ϯϓϨʔτͱҧ͍ɺ+BWBTDSJQUͷσʔλܗࣜ ɾจ ࣈྻͱ͍ͬͨσʔλܕɺྻɾࣙॻ ͕ͦͷ··͑Δɻ
-FBSO0ODF 8SJUF"OZXIFSF Ͳ͜Ͱ͑Δ .PEFM$POUSPMMFSͷΈΛલఏͱ͠ͳ͍ͷͰऔ Γճ͕͠Α͘ɺଞͷ'8ͱͷΈ߹Θͤࣗࡏɻ αʔόαΠυ OPEF Ͱಈ͖ɺωΠςΟϒΞϓϦ ॻ͚Δ 3FBDU/BUJWF
ɻ
+49 import React, { Component } from 'react'; import ReactDOM
from 'react-dom'; // ίϯϙʔωϯτ class App extends Component { render() { return <Hello />; } } // Stateless Functional Component const Hello = () => <div>Hello React!!!</div>; // initialize ReactDOM.render(<App/>, document.getElementById('app')); +BWBTDSJQU֦ுͷλάߏจɻ+BWB4DSJQUF9UFOUIJPO $PNQPOFOU ಠࣗλάͷΑ͏ͳͷ
)FMMP8PSME import React, { Component } from 'react'; import ReactDOM
from 'react-dom'; // Component class App extends Component { render() { return <Hello />; } } // Stateless Functional Component const Hello = () => <div>Hello React!!!</div>; // initialize ReactDOM.render(<App/>, document.getElementById('app')); <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>React</title> </head> <body> <div id="app" /> </body> </html> JOEFYKTY JOEFYIUNM
1SPQFSUZͱ4UBUF 1SPQFSUZ 4UBUF w ίϯϙʔωϯτͷҾ w มߋ͞Εͳ͍ w ίϯϙʔωϯτ͕෦ʹ อ࣋͢Δঢ়ଶ
w มߋ͞ΕΔ
ίϯϙʔωϯτؒͷσʔλͷड͚͠ ͔Βࢠ ࢠ͔Β 1SPQFSUZͱͯ͢͠ɻ ͕ࢠʹࣗΒͷ4UBUFΛૢ ࡞͢ΔϝιουΛ͢ɻ ࢠ͕ͷ4UBUFΛૢ࡞͢Δ ϝιουΛݺͼग़͢ɻ
ίʔυαϯϓϧ import React, { Component } from 'react'; import ReactDOM
from 'react-dom'; // Parent Component class App extends Component { constructor() { super(); this.state = { messageBase: 'Hello React', message: 'Hello React!', count: 1, }; this.incrementCount = this.incrementCount.bind(this); this.decrementCount = this.decrementCount.bind(this); } // Handler incrementCount() { const { messageBase, count } = this.state; const nxCount = count + 1; this.setState({ ...this.state, // Spread Properties message: messageBase + '!'.repeat(nxCount), count: nxCount, }); } decrementCount() { const { messageBase, count } = this.state; const nxCount = count > 0 ? count - 1 : 0; this.setState({ ...this.state, message: messageBase + '!'.repeat(nxCount), count: nxCount, }); } ଓ͘ 4UBUFͷॳظԽ ࢠʹ͢4UBUFΛૢ࡞͢Δϝιου
ίʔυαϯϓϧ render() { const { message } = this.state; return
( <div> <div>{message}</div> <PlusMinusButton plusMinus={'+'} changeCount={this.incrementCount} /> <PlusMinusButton plusMinus={'-'} changeCount={this.decrementCount} /> </div> ); } } // Child Component const PlusMinusButton = ({ plusMinus, changeCount }) => { return <button onClick={changeCount}>{plusMinus}</button>; }; // Initialization ReactDOM.render(<App/>, document.getElementById('app')); "QQͷଓ͖ 1SPQFSUZͷड͚͠ ͔Β͞ΕͨϝιουΛΠϕϯτϦεφʔͱͯ͠ొ ͔Β͞Εͨ PSΛϘλϯϥϕϧͱͯ͠ར༻ IUUQTHJUIVCDPNZULBZBNVSBTUBSUSFBDUTUBUF
+BWB4DSJQUΛֶͿ 3FBDU(SBQI2-ΞϓϦ։ൃक़ ຖिਫ༵ɿ ։࠵ॴɿ ࢀՃඅɿ ʙʢ։ʣ ΪʔΫΦϑΟεܙൺण ԁ IUUQTNFUFPSGBODPOOQBTTDPN
5XJUUFSɿ (JU)VCɿ ϒϩάɿ !EBJ@TIJ IUUQTHJUIVCDPNEBJTIJ IUUQTNFEJVNDPN!EBJ@TIJ ओ࠵ऀհ
3FBDUɿ 3FEVYɿ (SBQI2-ɿ &4 શճ ɿ 7VFKTɿ /FYUKTɿ 3FBDU/BUJWFɿ 8FCQBDLɿ
IUUQCBTJDSFBDUBYMJHIUDPNIUNM IUUQCBTJDSFEVYBYMJHIUDPNIUNM IUUQCBTJDXFCUFDIBYMJHIUDPNHSBQIRMIUNM IUUQCBTJDXFCUFDIBYMJHIUDPNFTIUNM IUUQCBTJDXFCUFDIBYMJHIUDPNWVFKTIUNM IUUQCBTJDXFCUFDIBYMJHIUDPNOFYUKTIUNM IUUQCBTJDXFCUFDIBYMJHIUDPNDSOBIUNM IUUQCBTJDXFCUFDIBYMJHIUDPNXFCQBDLIUNM ࣗशڭࡐ