Slide 1

Slide 1 text

͍·͞Βฉ͚ͳ͍React @WEBΤϯδχΞษڧձ#03

Slide 2

Slide 2 text

Introduction •zuckey •developer at Yappli •React, PHP, Laravel •twitter: @zuckey_17 •Podcastʮ͕͠ͳ͍ϥδΦʯύʔιφϦςΟʔ •https://shiganai.org

Slide 3

Slide 3 text

React A JavaScript library for building user interfaces
 https://reactjs.org/

Slide 4

Slide 4 text

ࠓ೔࿩͢͜ͱ •ReactΛcreate-react-appΛ࢖ͬͯ৮ͬͯΈΔ •จ๏΋ͬ͘͟Γ঺հ •ॳΊ·ͯ͠ͷޙͷτϐοΫ঺հ

Slide 5

Slide 5 text

React •JavaScriptͰUIΛॻͨ͘ΊͷϥΠϒϥϦ •͋͘·ͰUIͳͷͰϨϯμϦϯάઌ͸ԿͰ΋ྑ͍
 (ઐ༻ͷϥΠϒϥϦ͕ผʹ༻ҙ͞Ε͍ͯΔ) •DOM, Native, VR … Ի੠Λग़ྗ͍ͯ͠Δํ΋͍ͨΓ HTML, CSS iOS, Android VR etc…

Slide 6

Slide 6 text

ReactͷΠϝʔδ

DOMͰ͸ͳ͍ཁૉͷू·ΓΛ JSX(ޙग़)Ͱॻ͘ DOMͱͯ͠ϨϯμϦϯά

Slide 7

Slide 7 text

create-react-appʹΑΔReactͷ͸͡Ί͔ͨ •Node.jsΛΠϯετʔϧ (6.x ~) •create-react-app •$ npm install -g create-react-app •$ create-react-app { project name } •$ cd { project name } •$ npm start •※Babel •ECMAscript2015Ҏ߱ͷ΋ͷΛϒϥ΢βʔͰಈ͘΋ͷʹτϥϯεύΠϧ

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

JSΛॻ͘

Slide 10

Slide 10 text

index.js ReactͰߏஙͨ͠Ծ૝తͳDOMπϦʔΛ
 DOMʹϨϯμϦϯά͍ͯ͠Δ

Slide 11

Slide 11 text

App.js JSX

Slide 12

Slide 12 text

JSX •React.createElement()ͷ౶ҥߏจ •

ͳͲɺHTMLϥΠΫͳXMLͰهड़ •classଐੑ͕classNameʹͳͬͨΓ •CSSΛJSΦϒδΣΫτͰॻ͍ͨΓ •React.render()ͱ͍͏Lifecycle MethodʹΑΓ
 มߋ͕React-DOMʹ௨஌ɺϨϯμϦϯά͞ΕΔ

Slide 13

Slide 13 text

App.js JSX

Slide 14

Slide 14 text

App.js ίϯϙʔωϯτ

Slide 15

Slide 15 text

ίϯϙʔωϯτπϦʔ ίϯϙʔωϯτͷπϦʔΛDOMʹϨϯμϦϯά

Slide 16

Slide 16 text

ίϯϙʔωϯτͱProps ଐੑΛܦ༝ͯ͠
 ஋ΛPropsͱͯ͠౉͢͜ͱ͕Ͱ͖Δ Props Props Props Props

Slide 17

Slide 17 text

State ʮDOM͸Stateͷ ࣸ૾Ͱ͋Δʯ

Slide 18

Slide 18 text

Stateͷมߋ stateͷมߋ͸setState()
 ϝιουܦ༝ͰͷΈՄೳ

Slide 19

Slide 19 text

Lifecycle Method •Componentʹ͸ଟ͘ͷLifecycle Method͕ੜ͍͑ͯΔ •Ұ౓ϨϯμϦϯά͞ΕΔͱɺ
 setState΍৽ͨͳProps͕਌͔ΒΘ ͨ͞ΕΔͳͲʹΑͬͯ
 දࣔ͢΂͖஋͕มߋͨ࣌͠
 ͳͲʹ͜ΕΒͷϝιου͕ൃՐ͢Δ cf: https://tylermcginnis.com/an-introduction-to-life-cycle- events-in-react-js/

Slide 20

Slide 20 text

Lifecycle Method cf: http://glassonion.hatenablog.com/entry/20120405/1333611664 cf: http://glassonion.hatenablog.com/entry/20120405/1333611664

Slide 21

Slide 21 text

Lifecycle Method •componentWillMount •ίϯϙʔωϯτ͕DOMπϦʔʹ௥Ճ͞ΕΔ௚લʹ1౓͚ͩݺ͹ΕΔ •ॳճඳը௚લͷfetchAPIͷϦΫΤετ͸ͪ͜Β •componentDidMount •ίϯϙʔωϯτ͕DOMπϦʔʹ௥Ճ͞Εͨ௚ޙʹ1౓͚ͩݺ͹ΕΔ •componentWillUpdate •props΍state͕มߋ͞ΕDOMπϦʔʹ൓ө͞ΕΔ௚લʹຖճݺ͹ΕΔ •componentDidUpdate •props΍state͕มߋ͞ΕDOMπϦʔʹ൓ө͞Εͨ௚ޙʹຖճݺ͹ΕΔ •ଞʹ΋༻్Ԡͯ͡LifecycleϝιουΛ࢖͏͜ͱ͕Ͱ͖Δ •ύϑΥʔϚϯενϡʔχϯάͷͨΊͷ
 shouldComponentUpdate •props͕৽͘͠มΘΔ࣌ʹΞφ΢ϯεతʹ͔ͭ͏ •componentWillRecieveProps

Slide 22

Slide 22 text

Lifecycle Method

Slide 23

Slide 23 text

ॳΊ·ͯ͠ͷޙʹ •Webpack, Babel •https://webpack.js.org/ •https://babeljs.io •࠷৽ͷ࢓༷ͰJSΛ͔͍ͯϒϥ΢βʹରԠͤ͞Δ •Ұ౓webpack.config.jsΛ͔͍ͯݟΔͱྑ͍͔΋ •TypeScript or FlowType •https://www.typescriptlang.org/ •https://flow.org/ •JavaScriptʹ͸ͳ͍ܕఆٛΛར༻Մೳ •React-router •https://reacttraining.com/react-router/ •SPAͷ୉ޣຯɺϋογϡΠϕϯτʹΑΓݟͨ໨Λมߋv4Ͱͷഁյతมߋʹ஫ҙ •Redux •http://redux.js.org/ •େن໛ͳstate؅ཧΛ͢ΔͷʹσʔλͷྲྀΕΛ1ຊԽɺ·ͣ͸middlewareͳ͠Ͱ •Immutable.js •https://facebook.github.io/immutable-js/ •Reactͱ਌࿨ੑͷߴ͍ؔ਺ϥΠϒϥϦ

Slide 24

Slide 24 text

·ͱΊ •React͸UIϥΠϒϥϦͰ͋Γɺ
 ఏڙ͞Ε͍ͯΔAPI͸͞΄Ͳଟ͘ͳ͍ •Ұ౓֮͑Δͱٸʹָ͘͠ͳΔ •·ͣখ͘͞ॻ͍ͯΈΔʂSPA͚͕ͩReact׆༻ ͡Όͳ͍ʂ •ٯʹݴ͏ͱଞͷϥΠϒϥϦͷબఆ͕ඞཁ •͜ͷ࿈ٳʹ৮ͬͯΈͯ͸͍͔͕Ͱ͠ΐ͏͔ʁ

Slide 25

Slide 25 text

એ఻ •https://shiganai.org •OSCA͞Μ΋ग़ԋ͞Ε͍ͯ·͢ •sp.6aʲήετ: OSCAʳָ͍͠SIerͷ৽OSରԠ •sp.6bʲήετ: OSCAʳָ͍͠ຊ൪؀ڥϖΞϦϦʔε