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 NativeアプリにRecoilを導入した話
Search
46kuro
October 02, 2021
Technology
39
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
React NativeアプリにRecoilを導入した話
46kuro
October 02, 2021
More Decks by 46kuro
See All by 46kuro
出前館におけるApple Pay運用Tips
46kuro
0
590
Other Decks in Technology
See All in Technology
SAENM ~Jupyterで残すPoCの試行錯誤、未来の自分と仲間を助ける記録!~
terapyon
0
110
20261017福岡devIO 「AIは"良いダッシュボード"を作れるか?
jtakeda
0
160
実体験から学ぶ分析エージェントの開発と運⽤
recruitengineers
PRO
8
2.4k
Classmethod Company Deck
satoshi7
1
690
JAWS-UGグッズ職人仕事の流儀
kentapapa
0
110
[JAWS-UG彩の国埼玉#12]そろそろ準備する?re:Invent2026をやさしく解説 / reinvent2026-sainokuni
sh_fk2
1
340
Post AI時代のリファクタリング実践記 / Refactoring in the post AI era
kaminashi
1
240
大型犬好きによるPugの紹介
yamanoku
1
160
CTO Night|NotionのAIエージェントとFDE
kzkhykw1991
0
130
Optunaの最新リリースv5.0について
pfn
PRO
0
120
今さら理解するウェブフォントver.2026
takanorip
3
820
S3 Filesで挑む! 八戸せんべい汁の食べ頃問題
usanchuu
0
100
Featured
See All Featured
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
340
StorybookのUI Testing Handbookを読んだ
zakiyama
31
7k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
6
1.2k
Ruling the World: When Life Gets Gamed
codingconduct
0
400
The Pragmatic Product Professional
lauravandoore
37
7.5k
The SEO Collaboration Effect
kristinabergwall1
1
590
First, design no harm
axbom
PRO
2
1.3k
The untapped power of vector embeddings
frankvandijk
2
1.9k
[RailsConf 2023] Rails as a piece of cake
palkan
59
7.1k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.2k
The Invisible Side of Design
smashingmag
301
52k
A Soul's Torment
seathinner
8
3.8k
Transcript
3FBDU/BUJWF 4UBUF.BOBHFNFOU-JCSBSZ d3FBDU/BUJWFΞϓϦʹ3FDPJMΛಋೖͨ͠d 4IJOKJ,VSPTBXB 3FBDU/BUJWF.BUTVSJ
ൃද༰ʹ͍ͭͯ w ༰ w 3FDPJMʹ͍ͭͯͬ͘͟Γઆ໌ w 4UBUF.BOBHFNFOUʹ͍ͭͯͷৄࡉͳઆ໌ൺֱݕ౼ߦ͍·ͤΜ w 3FBDU/BUJWF։ൃΛ࢝Ίͯ͘Β͍ͳͷͰɺؒҧ͍͋Ε͝ࢦఠ͓ئ͍͠·͢ w
ରऀ w 4UBUF.BOBHFNFOU-JCSBSZΛͬͨ͜ͱ͕ͳ͍ํ w 3FDPJMʹ͍ͭͯؾʹͳ͍ͬͯΔํ w 3FBDU/BUJWFͰͳ͑͘Δ͔ؾʹͳ͍ͬͯΔํ
͓͍͑ͨ͜͠ͱ ಋೖͷഎܠ 3FDPJMʹ͍ͭͯ 3FBDU/BUJWFڥԼͰى͜Δ*TTVFTʹ͍ͭͯ
3FDPJMಋೖͷഎܠ w ৽نػೳ͓Αͼ৽نը໘ͷ։ൃத w ༷ʑͳσʔλͷऔಘฤूૹ৴ͳͲ͕ߦΘΕΔػೳ w ෳը໘Ͱڞ௨ͱͯ͠༻͢Δଘࡏ w ը໘Ͱѻ͏ػೳσʔλ͕ଟ͍ͨΊɺѻ͏4UBUFଟ͍
4UBUF.BOBHFNFOU-JCSBSZ 4UBSLҎ্ͷ4UBUF.BOBHFNFOU-JCSBSZ w 4UBSɿL w ࠷ଟ͘ΘΕ͍ͯΔ 3FEVY .PC9 w 4UBSɿL
w 4JNQMF 94UBUF w 4UBSɿL w ঢ়ଶભҠɺՄࢹԽπʔϧଘࡏ w 4UBSɿL w (SBQI2-Ͱ༻ BQPMMPDMJFOU 3FDPJM w 4UBSɿL w 4JNQMFɺ'$Ͱ༻ ;VTUBOE w 4UBSɿL w 'MVYϕʔε IUUQTHJUIVCDPNPMFHSKVNJOBXFTPNFSFBDUTUBUFNBOBHFNFOU
͓͍͑ͨ͜͠ͱ ಋೖͷഎܠ 3FDPJMʹ͍ͭͯ 3FBDU/BUJWFڥԼͰى͜Δ*TTVFTʹ͍ͭͯ
3FDPJM w 4UBUF.BOBHFNFOU-JCSBSZ w 'BDFCPPL͕։ൃ w &YQFSJNFOUBMͱ͍͏Ґஔ͚ͮ w 3FBDUͷ)PPLʹͱ͍ͮͨ*OUFSGBDF w
IUUQTSFDPJMKTPSHEPDTJOUSPEVDUJPONPUJWBUJPO w +PUBJͳͲͷɺ3FDPJMʹӨڹΛड͚ͨ-JCSBSZଘࡏ
3FDPJM const TextState = atom({key: 'Text', default: ‘'}); const Content:
React.FC = () => { const [text, setText] = useRecoilState<string>(TextState); return ( <TextInput value={text} onChange={(event) => { setText(event.nativeEvent.text) }} /> ) } w "UPNΛఆٛ w $PNQPOFOU෦Ͱ3FDPJM4UBUFΛఆٛ ˠVTF4UBUFͱಉ͡Α͏ͳ͍ํͰ༻Մೳ w ͦͷଞʹ4FMFDUPS"UPN4FMFDUPSΛα ϙʔτ͢ΔͨΊͷ"1*͕͋Δ
3FDPJM֓ཁ·ͱΊ w '$ʹͱ͍ͮͨ*OUFSGBDFͰ༻Ͱ͖Δ4UBUF.BOBHFNFOU-JCSBSZ w +PUBJͳͲͷӨڹΛड͚ͨ-JCSBSZଘࡏ w "UPN4FMFDUPSΛఆٛͯ͠ɺ)PPLͷΑ͏ʹݺͼग़͢͜ͱͰ༻Ͱ͖Δ w γϯϓϧ w
ߋ৽͞Εͨ$PNQPOFOUͷΈ࠶ඳը͞ΕΔ w ۩ମతͳ༻ํ๏%PDVNFOUΛ͝ࢀরԼ͍͞
͓͍͑ͨ͜͠ͱ ಋೖͷഎܠ 3FDPJMʹ͍ͭͯ 3FBDU/BUJWFڥԼͰى͜Δ*TTVFTʹ͍ͭͯ
$POUSPMMFE$PNQPOFOUT w ࣗͰঢ়ଶΛอ࣋͢Δ$PNQPOFOUT w 3FBDUJOQVU UFYUBSFB TFMFDUͳͲ w 3FBDU/BUJWF5FYU*OQVU 4XJUDIͳͲ
w 3FBDU/BUJWFͷ$POUSPMMFE$PNQPOFOUͷ4UBUFͱͯ͠3FDPJMͷ4UBUFΛ༻ ͢Δͱɺෆ߹͕ൃੜ͢Δ IUUQTSFBDUKTPSHEPDTGPSNTIUNMDPOUSPMMFEDPNQPOFOUT
ྫ5FYU*OQVU VTF4UBUFΛ༻͢Δ const Content: React.FC = () => { const
[text, setText] = useState<string>(''); return ( <TextInput value={text} onChange={(event) => { setText(event.nativeEvent.text) }} /> ) }
ྫ5FYU*OQVU 3FDPJM4UBUFΛ༻͢Δ const TextState = atom({key: 'Text', default: ‘'}); const
Content: React.FC = () => { const [text, setText] = useRecoilState<string>(TextState); return ( <TextInput value={text} onChange={(event) => { setText(event.nativeEvent.text) }} /> ) }
VTF4UBUF VTF3FDPJM4UBUF
ݪҼ w ͓ͦΒ͘ TFU3FDPJM4UBUF෦Ͱඇಉظॲ ཧ͕͍ͬͯΔ w ͓ͦΒ͘ 5FYU*OQVUಉظతʹ͕ߋ৽ ͞ΕΔ͜ͱΛલఏʹ$PNQPOFOU͕࡞ΒΕ ͍ͯΔ
w Ұॠ͚ͩWBMVF͕ݩͷʹΔͨΊɺ͜ ͷΑ͏ͳࣄ͕ى͖Δ w 3FDPJMΛ༻͠ͳͯ͘ɺӈͷΑ͏ͳίʔ υͩͱTFU3FDPJM4UBUFͱಉ݁͡ՌʹͳΔ const Content: React.FC = () => { const [text, setText] = useState<string>(''); return ( <TextInput value={text} onChange={(event) => { const text = event.nativeEvent.text; setTimeout(() => { setText(text) }, 0) }} style={styles.sectionContainer} /> ) }
ରࡦ w جຊతʹɺը໘ͷΈͰߋ৽͞Ε ͨΛ༻͢Δ߹ʹɺ3FDPJMͷ 4UBUFΛ༻ͤͣɺTFU4UBUFΛ༻͍ Δ w Ͳ͏ͯ͠3FDPJMΛ͍͍ͨ߹ ɺVTF4UBUFͰҰ࣌తʹΛߋ৽͢ Δ͜ͱͰճආͰ͖Δ
const TextState = atom({key: 'Text', default: ''}); const Content: React.FC = () => { const [text, setText] = useState<string>(''); const setGlobalText = useSetRecoilState(TextState); useEffect(() => { setGlobalText(text); }, [text]) return ( <TextInput value={text} onChange={(event) => { const text = event.nativeEvent.text; setText(text) }} style={styles.sectionContainer} /> ) }
ͦͷଞ(JUIVCʹڍ͕͍ͬͯΔ*TTVFT
3FMFBTF#VJMEͰ4UBUFߋ৽͕Ͱ͖ͳ͍ w IUUQTHJUIVCDPNGBDFCPPLFYQFSJNFOUBM3FDPJMJTTVFT w 3FBDU/BUJWFͷΈͰى͜ΔΑ͏ w ࠶ݱ͢ΔͷͰ͋Εக໋తͳෆ۩߹ͱͳΓಘΔ w ݱঢ়ɺಛʹى͖ͨ͜ͱͳ͍
.FNPSZ-FBL w ͍͔ͭ͘*TTVFT͕͕͍͋ͬͯΔ w IUUQTHJUIVCDPNGBDFCPPLFYQFSJNFOUBM3FDPJMJTTVFT w IUUQTHJUIVCDPNGBDFCPPLFYQFSJNFOUBM3FDPJMJTTVFT w IUUQTHJUIVCDPNGBDFCPPLFYQFSJNFOUBM3FDPJMJTTVFT w
IUUQTHJUIVCDPNGBDFCPPLFYQFSJNFOUBM3FDPJMJTTVFT w BUPN'BNJMZTFMFDUPS'BNJMZͳͲͷ"1*Λ༻͢Δͱى͖Δʁ w ͜ͷෆ۩߹Λཧ༝ʹ+PUBJΛ༻͍ͯ͠Δͱ͍͏ίϝϯτݟ͔ͭͬͨ
·ͱΊ
·ͱΊ w 3FDPJMͱ͍͍ͯ͢ w "UPN4FMFDUPSΛ༻͢Δ͜ͱͰɺ(MPCBMͳ4UBUFΛVTF4UBUFͱಉ͡ײ֮Ͱ༻Ͱ͖Δ w ॊೈ͗͢ΔͷͰɺνʔϜ։ൃͰ࣮ࡍʹར༻͢Δࡍʹ༻ํ๏Λݕ౼ͨ͠΄͏͕ྑͦ͞͏ w 3FBDU/BUJWFڥԼͰͳ͘༻Ͱ͖͍ͯΔ w
-JCSBSZͱͯ͠&YQFSJNFOUBMͳҐஔ͚ w ͍͔ͭ͘ͷ՝ w 3FBDU/BUJWFͷ$PNQPOFOUͱซ༻͢Δ͜ͱͰى͖Δ*TTVF w ಛఆڥ༻ํ๏Ͱى͖Δ*TTVF
ॴײ w 3FBDUͷΤίγεςϜૉΒ͍͠ w 4UBUF.BOBHFNFOU-JCSBSZͷબࢶ͕ଟ͍ w બࢶ͕ଟ͗ͯ͢ɺ໎͏͜ͱଟ͍ w 3FDPJMҎ֎ͷ4UBUF.BOBHFNFOU-JCSBSZʹֶ͍ͭͯͼ͍ͨ w
ঢ়گʹԠͯ͡બఆͰ͖ΔΑ͏ɺ༷ʑͳ-JCSBSZͷ࣮༻ྫΛֶͼ͍ͨ