Slide 1

Slide 1 text

/ / React.kyoto v . . Learning-Hooks

Slide 2

Slide 2 text

Learning-Hooks Taiki Nishi Nokogiri nkgrnkgr @nkgrnkgr プロフィール - サイボウズ株式会社 - kintoneというプロダクトの開発してます - TypeScript / React / Java - スクラム/モブプログラミング - プロダクトでもReact⼀部使っているが触ったことない - プライベートでなんか作るときにReactを使う程度 ͸͡Ί·ͯ͠

Slide 3

Slide 3 text

Learning-Hooks 今⽇お話しすること ࠓߋͳ͕ΒHooksͷษڧͨ͠ͷͰڞ༗͍ͨ͠✍ ‧2018年12⽉にHooksが発表されてから半年ほどReactのキャッチアップサボってた ‧せっかく勉強したので、LTしたい ‧マサカリOK(ただし、優しく殺してください)

Slide 4

Slide 4 text

Learning-Hooks ⽬次 . Ice Break . Hooksとは . Hooks以前の話 . Hooks API の紹介

Slide 5

Slide 5 text

Ice Break

Slide 6

Slide 6 text

Learning-Hooks Reactの⼈気

Slide 7

Slide 7 text

Learning-Hooks Reactの⼈気

Slide 8

Slide 8 text

Learning-Hooks Reactの⼈気

Slide 9

Slide 9 text

React はいいぞ

Slide 10

Slide 10 text

Hooksとは

Slide 11

Slide 11 text

Learning-Hooks Hooksとは Hooks ‧React . で追加されたReactの新機能 (Latest release v . . ) ‧stateなどのReactの機能をClassでなく関数コンポーネントで使うことができる 例) - useState - useEffect 公式ドキュメント EN : https://reactjs.org/docs/hooks-reference.html JP : https://ja.reactjs.org/docs/hooks-reference.html

Slide 12

Slide 12 text

あとは公式ドキュメント読んどいて

Slide 13

Slide 13 text

ではLTにならないので

Slide 14

Slide 14 text

Hooks出る前は? クラスコンポーネントや Recomposeとの⽐較

Slide 15

Slide 15 text

Hooks以前の話

Slide 16

Slide 16 text

Learning-Hooks Hooks以前の話 ΫϥείϯϙʔωϯτͰ͸ͳؔ͘਺ίϯϙʔωϯτ FacebookのReact開発チームは公式⾒解として 関数コンポーネント書くことを優先するように開発者にアナウンスしている。 理由は以下の通り ‧クラス内のthisの挙動が難解 ‧記述が冗⻑になりがちで、時系列が複雑なライフサイクルメソッドの挙動 ‧今後導⼊予定の各種最適化がクラスだと難しい

Slide 17

Slide 17 text

Learning-Hooks Hooks以前の話 ΫϥείϯϙʔωϯτͰ͸ͳؔ͘਺ίϯϙʔωϯτ ただし、関数コンポーネントは Stateやライフサイクルメソッドが使えない

Slide 18

Slide 18 text

Learning-Hooks Hooks以前の話 Recompose 関数コンポーネントやHOCのためのサードパーティのReactユーティリティ - Local State - ライフサイクルメソッド - 複数のHOCを合成する 関数コンポーネント + HOC + Recompose は鉄板だった

Slide 19

Slide 19 text

Learning-Hooks Hooks以前の話 Recompose すでに開発が停⽌が発表されいる 2018年11⽉ React Confで α版のHooksが発表されて、 数⽇後Recomposeは開発停⽌を発表 Recompose作者の Andrew Clark さんがFacebookでHooksの開発にジョイン

Slide 20

Slide 20 text

Hooks API の紹介

Slide 21

Slide 21 text

Learning-Hooks Hooks APIの紹介 ReactのStateを利⽤することができる -useState の引数は初期値 -戻り値の配列の0番⽬は stateの変数 -戻り値の配列の1番⽬は stateを更新可能な関数 useState

Slide 22

Slide 22 text

Learning-Hooks Hooks APIの紹介 ྫ 関数コンポーネント + Hooks クラスコンポーネント

Slide 23

Slide 23 text

Learning-Hooks Hooks APIの紹介 Recompose ྫ

Slide 24

Slide 24 text

Learning-Hooks Hooks APIの紹介 Reactのライフサイクルメソッドに該当 -componentDidMout() -componentDidUpdate() -componentWillUnmount() useEffect - 第⼀引数に関数、第⼆引数に配列を持つ - doSomethingは初回レンダリング時に実⾏される - watchVarが変更されない限り、再レンダリング時は実⾏されない - 初回レンダリング時のみ実⾏したい場合は空の配列を渡す - 第⼆引数を省略すると再レンダリング時に毎回実⾏される - 戻り値のclearSomethingはアンマウント時に実⾏される

Slide 25

Slide 25 text

Learning-Hooks Hooks APIの紹介 ྫ 関数コンポーネント + Hooks クラスコンポーネント

Slide 26

Slide 26 text

Learning-Hooks Hooks APIの紹介 Recompose ྫ

Slide 27

Slide 27 text

Learning-Hooks Hooks APIの紹介 DOM への参照のための ref オブジェクトを返却する コンポーネントの存在期間全体にわたって 存在し続ける インスタンス変数のような使い⽅ができる useRef

Slide 28

Slide 28 text

Learning-Hooks Hooks APIの紹介 特定のPropsが変更されたときだけ コンポーネントを再レンダリングしたい場合 に使う shouldComponentUpdate() に相当するもの shouldComponentUpdateと違って、 親コンポーネントに記載する必要がある useMemo

Slide 29

Slide 29 text

Learning-Hooks Hooks APIの紹介 - useContext - useReducer - useCallback - useImperativeHandle - useLayoutEffect - useDebugValue ͦͷଞHooksAPIs 公式ドキュメント https://ja.reactjs.org/docs/hooks-reference.html

Slide 30

Slide 30 text

ご静聴ありがとうございました'