37. Copyright (C) 2019 NIHON-Protec Co., Ltd. All Rights Reserved.
Reactの基礎:状態の局所化
Form
TextBox
Radio
Button
props props
props
state
コンポーネントに状態を
持たせることもできる
状態を持つ
コンポーネント
38. Copyright (C) 2019 NIHON-Protec Co., Ltd. All Rights Reserved.
Reactの基礎:状態の局所化
App
XXX XXX XXX
XXX XXX XXX XXX
props props props
props props props props
props
状態を最小限に抑える
state state
Reactアプリの
基本的な構成
39. Copyright (C) 2019 NIHON-Protec Co., Ltd. All Rights Reserved.
Reactの基礎:状態の局所化
• おさらい
– Reactは状態を極力持たない・扱わないような思想と仕組みを持っている
• 補足
– 親に値を渡すときはコールバックを使う
40. Copyright (C) 2019 NIHON-Protec Co., Ltd. All Rights Reserved.
Reactの基礎:状態の局所化
Form
TextBox
Radio
Button
props props
props
props = {
text,
onTextChanged
}
onTextChanged(“疋田”)
コールバックによる
値の引き渡し
state
70. Copyright (C) 2019 NIHON-Protec Co., Ltd. All Rights Reserved.
React採用時の注意点:パフォーマンス
• ほとんど完成してからパフォーマンス問題が発覚
– 開発者が使うマシンはスペックが高いので気づかなかった
– Reactに限らずSPA超あるある(辛い...)
Chromeで低スペックマシンをシミュレートしながら
地道に改善していった
71. Copyright (C) 2019 NIHON-Protec Co., Ltd. All Rights Reserved.
React採用時の注意点:パフォーマンス
Chrome開発者ツールの
Performanceタブで低スペック
CPUをシミュレートできる
72. Copyright (C) 2019 NIHON-Protec Co., Ltd. All Rights Reserved.
React採用時の注意点:パフォーマンス
• 大規模システムで初期表示時のパフォーマンスが問題になる場合は
コード分割(Code-Splitting)を検討しよう
Before After
Login Page A
Page B Page C
Page A
Page B Page C
Login
すべての画面のスクリ
プトがダウンロードさ
れる
実際に表示される画面
のスクリプトしかダウ
ンロードされない
73. Copyright (C) 2019 NIHON-Protec Co., Ltd. All Rights Reserved.
React採用時の注意点:認証
• 認証は今まで通りのCookie-Sessionベースでも十分
– JWTなどのトークンは扱いが難しい
• ログイン画面だけ別にするのもアリ
Login SPA
74. Copyright (C) 2019 NIHON-Protec Co., Ltd. All Rights Reserved.
React採用時の注意点:Reactの動向
• Reactは基本的にFacebookが自分たちのために作っている
• 我々はFacebookではないので、それいる!?みたいな機能も
• ただ、不要な機能は使わなければいいだけではある
(Reactは後方互換性をとても大事にする)
Concurrent ModeとSuspenseは追っておいた方がよいかも