screen
RecoilをState管理に使ってみた
Recoil
Server
user input
item info
amount
coupon
delivery
type
LINE point
order type
terms
agreement
isEnabled
receipt
address
phone
number
payment
method
Slide 20
Slide 20 text
screen
RecoilをState管理に使ってみた
Recoil
Server
user input
item info
amount
coupon
delivery
type
LINE point
order type
terms
agreement
isEnabled
receipt
address
phone
number
payment
method
Slide 21
Slide 21 text
screen
RecoilをState管理に使ってみた
Recoil
Server
user input
item info
amount
coupon
delivery
type
LINE point
order type
terms
agreement
isEnabled
receipt
address
phone
number
payment
method
依存関係が多すぎる…😵
Slide 22
Slide 22 text
screen
RecoilをState管理に使ってみた
Recoil
Server
user input
item info
amount
coupon
delivery
type
LINE point
order type
terms
agreement
isEnabled
receipt
address
phone
number
payment
method
Slide 23
Slide 23 text
screen
RecoilをState管理に使ってみた
Recoil
Server
user input
item info
amount
coupon
delivery
type
LINE point
order type
terms
agreement
isEnabled
receipt
address
phone
number
payment
method
Slide 24
Slide 24 text
screen
RecoilをState管理に使ってみた
Recoil
Server
user input
item info
amount
coupon
delivery
type
LINE point
order type
terms
agreement
isEnabled
receipt
address
phone
number
payment
method
頻繁に更新される…😵
Slide 25
Slide 25 text
screen
RecoilをState管理に使ってみた
Recoil
Server
user input
item info
amount
coupon
delivery
type
LINE point
order type
terms
agreement
isEnabled
receipt
address
phone
number
payment
method
かえって複雑に…😵
Slide 26
Slide 26 text
どうする…🤔
Slide 27
Slide 27 text
状態を2種類にわける
Slide 28
Slide 28 text
Server Cache / Local State
Slide 29
Slide 29 text
Server Cache
• サーバの情報を保持するキャッシュ
• サーバとクライアントの情報の一致が常に保証されている
• キャッシュの値がコンポーネントへリアクティブに作用する
Slide 30
Slide 30 text
Local State
• クライアントでのユーザ操作による情報を管理するState
• クライアントのみで一時的に保持している値を管理
Slide 31
Slide 31 text
screen
Server Cache / Local State
Server
user input
Server Cache
Local State
Slide 32
Slide 32 text
注文画面で実装する💪
Slide 33
Slide 33 text
注文画面で実装する💪
• Server Cache → Apollo Client のキャッシュを使う
• Local State → React useState を使う
Slide 34
Slide 34 text
screen
注文画面で実装する💪
Apollo Server
(BFF)
user input
Apollo Client Cache
useState
Slide 35
Slide 35 text
注文画面で実装する💪
• Server Cache → Apollo Client のキャッシュを使う
• Local State → React useState を使う
Slide 36
Slide 36 text
Server Cache→ apollo client のキャッシュを使う
• BFFのレスポンス情報自体を、Server Cacheとして保持する
• BFF (GraphQL) によって、1画面描画のためのリクエストが1回で
済むのでServer Cacheの状態管理が容易
• BFFのスキーマで型定義できる
Slide 37
Slide 37 text
注文画面で実装する💪
• Server Cache → Apollo Clientのキャッシュを使う
• Local State → React useState を使う
Slide 38
Slide 38 text
Local State → React useState を使う
• Server Cacheのおかげで、Localで独自に定義するStateを減らすこと
ができる
Slide 39
Slide 39 text
screen
Before...
Recoil
Server
user input
item info
amount
coupon
delivery
type
LINE point
order type
terms
agreement
isEnabled
receipt
address
phone
number
payment
method
Slide 40
Slide 40 text
screen
After...
Apollo Server
(BFF)
user input
Apollo Client Cache
useState
isEnabled
address
payment
method