Использование Recoil в React и React Native приложениях | Odessa Frontend Meetup #19

OdessaFrontend
OdessaFrontendOdessaFrontend
SZ


Использование


Recoil


в React и React Native
Sergii Zhuravel
Key facts
• Industry:


Telecom, IoT, Automotive, CRM


• Location:


Kyiv, UKR


• Position:


Lead Software Engineer


• Company


Absio
Fan of JavaScript and JS frameworks. I like table tennis,
fishing and traveling
Plan to review
•Проблема управления стейтом в React


•Популярные решения для управления стейтом


•Основы Recoil


•Что такое ADHD и почему мы используем Recoil


•Как мы используем Recoil в мобильном приложении


•Тестирование Recoil атомов и селекторов
State management problem in React
❑Различные типы стейта


❑Много библиотек и подходов


❑Различные платформы(React, React native)
Types of state
1. Component’s (local) State


2. Components shared state


3. App’s (global) state


4. UI state


5. Cache (Redux, GraphQL cache)
Redux in 2021?
Why React projects still use Redux
What about Recoil?
What about Recoil?
Recoil – Advantages
1.Minimal and Reactish
2.Easy Learning Curve (just Atoms and Selectors)
3.Boilerplate-free API
4.Distributed and incremental state definition


5.Supports React Suspense
What is Recoil?
Atoms + Selectors + hooks + utilities
Recoil – Atoms
Atoms contain the source of truth for our
application state.
Recoil – Selectors
A selector represents a piece of derived
state. You can think of derived state as the
output of passing state to a pure function
that modifies the given state in some way.
What about ADHD?
What about ADHD?
Использование Recoil в React и React Native приложениях | Odessa Frontend Meetup #19
Использование Recoil в React и React Native приложениях | Odessa Frontend Meetup #19
Использование Recoil в React и React Native приложениях | Odessa Frontend Meetup #19
React App – Login View State
Path:
• srcstorestatelogin-view.state.ts
React App – Login View
Path: srcviewsauthloginlogin.view.tsx
React App – RecoilRoot
Path:
srcindex.tsx
React App – Observing events
Path:
srcindex.tsx
React App – Observing events
Path:
srcindex.tsx
React App – Observing events (topics)
Path:
srcindex.tsx
React App – Selectors
Path:
srcindex.tsx
React Native App – Login View State
Path:
• srcstorestatelogin-view.state.ts
React Native App – Navigation
Path: srcviewsauthloginlogin.view.tsx
React Native App – RecoilRoot
Path:
srcApp.tsx
Testing Recoil
Use RecoilRoot in your tests
Testing Recoil
Use ReoilObserver to track atom


and/or selector change
Testing Recoil – RecoilObserver
Use ReoilObserver to track atom


and/or selector change
Testing Recoil - snapshot_UNSTABLE()
Use ReoilObserver to track atom


and/or selector change
Summary:
• Recoil is still experimental, but it’s used in production in many projects


• Recoil can be used in React and React native


• Recoil is very easy to test (within React context and outside)


• Have you tried Recoil already?
Links:
• https://recoiljs.org
• https://recoiljs.org/resources/
• https://adhdamerica.org/
• https://github.com/sergii-zhuravel
Thank you!


Sergii Zhuravel


https://twitter.com/SZhuravel
1 of 34

Recommended

"React application structure at project start", Maksym Shestopal by
"React application structure at project start", Maksym Shestopal"React application structure at project start", Maksym Shestopal
"React application structure at project start", Maksym ShestopalFwdays
247 views26 slides
Изоморфные React-приложения производительность и масштабирование / Денис Изма... by
Изоморфные React-приложения производительность и масштабирование / Денис Изма...Изоморфные React-приложения производительность и масштабирование / Денис Изма...
Изоморфные React-приложения производительность и масштабирование / Денис Изма...Ontico
1.8K views111 slides
Как приручить реактивное программирование в XAML приложениях by
Как приручить реактивное программирование в XAML приложенияхКак приручить реактивное программирование в XAML приложениях
Как приручить реактивное программирование в XAML приложенияхDenis Tsvettsih
505 views137 slides
Изоморфные React-приложения: производительность и масштабирование by
Изоморфные React-приложения: производительность и масштабированиеИзоморфные React-приложения: производительность и масштабирование
Изоморфные React-приложения: производительность и масштабированиеDenis Izmaylov
1.1K views111 slides
React + Redux. Опыт использования by
React + Redux. Опыт использованияReact + Redux. Опыт использования
React + Redux. Опыт использованияGDG Odessa
464 views35 slides
CodeFest 2011. Высоцкий С. — Crawljax. Четвертый закон робототехники by
CodeFest 2011. Высоцкий С. — Crawljax. Четвертый закон робототехникиCodeFest 2011. Высоцкий С. — Crawljax. Четвертый закон робототехники
CodeFest 2011. Высоцкий С. — Crawljax. Четвертый закон робототехникиCodeFest
811 views28 slides

More Related Content

Similar to Использование Recoil в React и React Native приложениях | Odessa Frontend Meetup #19

Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB) by
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)Ontico
2.4K views119 slides
Превышаем скоростные лимиты с Angular 2 by
Превышаем скоростные лимиты с Angular 2Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2Oleksii Okhrymenko
564 views119 slides
Angular vs Angular 2 vs React. Сергей Александров by
Angular vs Angular 2 vs React. Сергей АлександровAngular vs Angular 2 vs React. Сергей Александров
Angular vs Angular 2 vs React. Сергей АлександровEatDog
4.2K views18 slides
«Oracle Application Quality Management: Средства тестирования и управления те... by
«Oracle Application Quality Management: Средства тестирования и управления те...«Oracle Application Quality Management: Средства тестирования и управления те...
«Oracle Application Quality Management: Средства тестирования и управления те...Andrey Akulov
949 views40 slides
ПРАКТИЧЕСКИЙ ОПЫТ ИСПОЛЬЗОВАНИЯ REACT NATIVE + REDUX, Краснояров Станислав, R... by
ПРАКТИЧЕСКИЙ ОПЫТ ИСПОЛЬЗОВАНИЯ REACT NATIVE + REDUX, Краснояров Станислав, R...ПРАКТИЧЕСКИЙ ОПЫТ ИСПОЛЬЗОВАНИЯ REACT NATIVE + REDUX, Краснояров Станислав, R...
ПРАКТИЧЕСКИЙ ОПЫТ ИСПОЛЬЗОВАНИЯ REACT NATIVE + REDUX, Краснояров Станислав, R...it-people
286 views22 slides
WebCamp2016:Front-End_Роман Якобчук_Relay, GraphQL и остальные радости соврем... by
WebCamp2016:Front-End_Роман Якобчук_Relay, GraphQL и остальные радости соврем...WebCamp2016:Front-End_Роман Якобчук_Relay, GraphQL и остальные радости соврем...
WebCamp2016:Front-End_Роман Якобчук_Relay, GraphQL и остальные радости соврем...WebCamp
245 views21 slides

Similar to Использование Recoil в React и React Native приложениях | Odessa Frontend Meetup #19(20)

Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB) by Ontico
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)
Превышаем скоростные лимиты с Angular 2 / Алексей Охрименко (IPONWEB)
Ontico2.4K views
Превышаем скоростные лимиты с Angular 2 by Oleksii Okhrymenko
Превышаем скоростные лимиты с Angular 2Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2
Oleksii Okhrymenko564 views
Angular vs Angular 2 vs React. Сергей Александров by EatDog
Angular vs Angular 2 vs React. Сергей АлександровAngular vs Angular 2 vs React. Сергей Александров
Angular vs Angular 2 vs React. Сергей Александров
EatDog4.2K views
«Oracle Application Quality Management: Средства тестирования и управления те... by Andrey Akulov
«Oracle Application Quality Management: Средства тестирования и управления те...«Oracle Application Quality Management: Средства тестирования и управления те...
«Oracle Application Quality Management: Средства тестирования и управления те...
Andrey Akulov949 views
ПРАКТИЧЕСКИЙ ОПЫТ ИСПОЛЬЗОВАНИЯ REACT NATIVE + REDUX, Краснояров Станислав, R... by it-people
ПРАКТИЧЕСКИЙ ОПЫТ ИСПОЛЬЗОВАНИЯ REACT NATIVE + REDUX, Краснояров Станислав, R...ПРАКТИЧЕСКИЙ ОПЫТ ИСПОЛЬЗОВАНИЯ REACT NATIVE + REDUX, Краснояров Станислав, R...
ПРАКТИЧЕСКИЙ ОПЫТ ИСПОЛЬЗОВАНИЯ REACT NATIVE + REDUX, Краснояров Станислав, R...
it-people286 views
WebCamp2016:Front-End_Роман Якобчук_Relay, GraphQL и остальные радости соврем... by WebCamp
WebCamp2016:Front-End_Роман Якобчук_Relay, GraphQL и остальные радости соврем...WebCamp2016:Front-End_Роман Якобчук_Relay, GraphQL и остальные радости соврем...
WebCamp2016:Front-End_Роман Якобчук_Relay, GraphQL и остальные радости соврем...
WebCamp245 views
Изоморфные react-приложения by Denis Izmaylov
Изоморфные react-приложенияИзоморфные react-приложения
Изоморфные react-приложения
Denis Izmaylov3.6K views
FrontDays #2. Игорь Лобанов, Миграция Backbone (Marionette) -> React + Redux by FrontDays
FrontDays #2. Игорь Лобанов, Миграция Backbone (Marionette) -> React + ReduxFrontDays #2. Игорь Лобанов, Миграция Backbone (Marionette) -> React + Redux
FrontDays #2. Игорь Лобанов, Миграция Backbone (Marionette) -> React + Redux
FrontDays573 views
Статический анализ кода в DDD by Aleksei Alekseev
Статический анализ кода в DDDСтатический анализ кода в DDD
Статический анализ кода в DDD
Aleksei Alekseev293 views
Подходы и технологии в React Redux by Innovecs
Подходы и технологии в React ReduxПодходы и технологии в React Redux
Подходы и технологии в React Redux
Innovecs267 views
Создаем масштабируемое корпоративное JavaScript-приложение, Влад Плотник by Sigma Software
Создаем масштабируемое корпоративное JavaScript-приложение, Влад ПлотникСоздаем масштабируемое корпоративное JavaScript-приложение, Влад Плотник
Создаем масштабируемое корпоративное JavaScript-приложение, Влад Плотник
Sigma Software76 views
DUMP-2012 - Мобильные технологии - "Как мы выстраиваем разработку сервиса под... by it-people
DUMP-2012 - Мобильные технологии - "Как мы выстраиваем разработку сервиса под...DUMP-2012 - Мобильные технологии - "Как мы выстраиваем разработку сервиса под...
DUMP-2012 - Мобильные технологии - "Как мы выстраиваем разработку сервиса под...
it-people301 views
Где кончается react native? / Павел Кондратенко (Rambler&Co) by Ontico
Где кончается react native? / Павел Кондратенко (Rambler&Co)Где кончается react native? / Павел Кондратенко (Rambler&Co)
Где кончается react native? / Павел Кондратенко (Rambler&Co)
Ontico559 views
Введение в performance management by SQALab
Введение в performance managementВведение в performance management
Введение в performance management
SQALab2K views
React & Redux (Lazarev) by Innovecs
React & Redux (Lazarev)React & Redux (Lazarev)
React & Redux (Lazarev)
Innovecs278 views
Vladimir Trandafilov - When you need your system of cross browser testing by Ievgenii Katsan
Vladimir Trandafilov - When you need your system of cross browser testingVladimir Trandafilov - When you need your system of cross browser testing
Vladimir Trandafilov - When you need your system of cross browser testing
Ievgenii Katsan55 views
Микросервисная архитектура на базе CoreOS и Kubernetes by Denis Izmaylov
Микросервисная архитектура на базе CoreOS и KubernetesМикросервисная архитектура на базе CoreOS и Kubernetes
Микросервисная архитектура на базе CoreOS и Kubernetes
Denis Izmaylov1.9K views
React native. Bridge From Web To Mobile. Intro by Igor Izraylevych
React native. Bridge From Web To Mobile. IntroReact native. Bridge From Web To Mobile. Intro
React native. Bridge From Web To Mobile. Intro
Igor Izraylevych347 views

More from OdessaFrontend

Викторина | Odessa Frontend Meetup #19 by
Викторина | Odessa Frontend Meetup #19Викторина | Odessa Frontend Meetup #19
Викторина | Odessa Frontend Meetup #19OdessaFrontend
139 views20 slides
Великолепный Gatsby.js | Odessa Frontend Meetup #19 by
Великолепный Gatsby.js | Odessa Frontend Meetup #19Великолепный Gatsby.js | Odessa Frontend Meetup #19
Великолепный Gatsby.js | Odessa Frontend Meetup #19OdessaFrontend
122 views50 slides
Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr... by
Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr...Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr...
Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr...OdessaFrontend
214 views73 slides
Canvas API как инструмент для работы с графикой | Odessa Frontend Meetup #18 by
Canvas API как инструмент для работы с графикой | Odessa Frontend Meetup #18Canvas API как инструмент для работы с графикой | Odessa Frontend Meetup #18
Canvas API как инструмент для работы с графикой | Odessa Frontend Meetup #18OdessaFrontend
82 views19 slides
Викторина | Odessa Frontend Meetup #17 by
Викторина | Odessa Frontend Meetup #17Викторина | Odessa Frontend Meetup #17
Викторина | Odessa Frontend Meetup #17OdessaFrontend
150 views23 slides
Антихрупкий TypeScript | Odessa Frontend Meetup #17 by
Антихрупкий TypeScript | Odessa Frontend Meetup #17Антихрупкий TypeScript | Odessa Frontend Meetup #17
Антихрупкий TypeScript | Odessa Frontend Meetup #17OdessaFrontend
108 views60 slides

More from OdessaFrontend(20)

Викторина | Odessa Frontend Meetup #19 by OdessaFrontend
Викторина | Odessa Frontend Meetup #19Викторина | Odessa Frontend Meetup #19
Викторина | Odessa Frontend Meetup #19
OdessaFrontend139 views
Великолепный Gatsby.js | Odessa Frontend Meetup #19 by OdessaFrontend
Великолепный Gatsby.js | Odessa Frontend Meetup #19Великолепный Gatsby.js | Odessa Frontend Meetup #19
Великолепный Gatsby.js | Odessa Frontend Meetup #19
OdessaFrontend122 views
Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr... by OdessaFrontend
Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr...Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr...
Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr...
OdessaFrontend214 views
Canvas API как инструмент для работы с графикой | Odessa Frontend Meetup #18 by OdessaFrontend
Canvas API как инструмент для работы с графикой | Odessa Frontend Meetup #18Canvas API как инструмент для работы с графикой | Odessa Frontend Meetup #18
Canvas API как инструмент для работы с графикой | Odessa Frontend Meetup #18
OdessaFrontend82 views
Викторина | Odessa Frontend Meetup #17 by OdessaFrontend
Викторина | Odessa Frontend Meetup #17Викторина | Odessa Frontend Meetup #17
Викторина | Odessa Frontend Meetup #17
OdessaFrontend150 views
Антихрупкий TypeScript | Odessa Frontend Meetup #17 by OdessaFrontend
Антихрупкий TypeScript | Odessa Frontend Meetup #17Антихрупкий TypeScript | Odessa Frontend Meetup #17
Антихрупкий TypeScript | Odessa Frontend Meetup #17
OdessaFrontend108 views
Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17 by OdessaFrontend
Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17
Частые ошибки при разработке фронтенда | Odessa Frontend Meetup #17
OdessaFrontend84 views
OAuth2 и OpenID Connect простым языком | Odessa Frontend Meetup #17 by OdessaFrontend
OAuth2 и OpenID Connect простым языком | Odessa Frontend Meetup #17OAuth2 и OpenID Connect простым языком | Odessa Frontend Meetup #17
OAuth2 и OpenID Connect простым языком | Odessa Frontend Meetup #17
OdessaFrontend254 views
Объекты в ECMAScript | Odessa Frontend Meetup #16 by OdessaFrontend
Объекты в ECMAScript | Odessa Frontend Meetup #16Объекты в ECMAScript | Odessa Frontend Meetup #16
Объекты в ECMAScript | Odessa Frontend Meetup #16
OdessaFrontend169 views
Фриланс как профессиональная деградация | Odessa Frontend Meetup #16 by OdessaFrontend
Фриланс как профессиональная деградация | Odessa Frontend Meetup #16Фриланс как профессиональная деградация | Odessa Frontend Meetup #16
Фриланс как профессиональная деградация | Odessa Frontend Meetup #16
OdessaFrontend159 views
Cлайдер на CSS | Odessa Frontend Meetup #16 by OdessaFrontend
Cлайдер на CSS | Odessa Frontend Meetup #16Cлайдер на CSS | Odessa Frontend Meetup #16
Cлайдер на CSS | Odessa Frontend Meetup #16
OdessaFrontend148 views
Современный станок верстальщика by OdessaFrontend
Современный станок верстальщикаСовременный станок верстальщика
Современный станок верстальщика
OdessaFrontend188 views
Викторина | Odessa Frontend Meetup #15 by OdessaFrontend
Викторина | Odessa Frontend Meetup #15Викторина | Odessa Frontend Meetup #15
Викторина | Odessa Frontend Meetup #15
OdessaFrontend87 views
DRY’им Vuex | Odessa Frontend Meetup #15 by OdessaFrontend
DRY’им Vuex | Odessa Frontend Meetup #15DRY’им Vuex | Odessa Frontend Meetup #15
DRY’им Vuex | Odessa Frontend Meetup #15
OdessaFrontend64 views
А/Б тестирование: Что? Как? Зачем? | Odessa Frontend Meetup #15 by OdessaFrontend
А/Б тестирование: Что? Как? Зачем? | Odessa Frontend Meetup #15А/Б тестирование: Что? Как? Зачем? | Odessa Frontend Meetup #15
А/Б тестирование: Что? Как? Зачем? | Odessa Frontend Meetup #15
OdessaFrontend109 views
Пощупать 3д в браузере | Odessa Frontend Meetup #15 by OdessaFrontend
Пощупать 3д в браузере | Odessa Frontend Meetup #15Пощупать 3д в браузере | Odessa Frontend Meetup #15
Пощупать 3д в браузере | Odessa Frontend Meetup #15
OdessaFrontend126 views
Викторина | Odessa Frontend Meetup #14 by OdessaFrontend
Викторина | Odessa Frontend Meetup #14Викторина | Odessa Frontend Meetup #14
Викторина | Odessa Frontend Meetup #14
OdessaFrontend83 views
Викторина | Odessa Frontend Meetup #13 by OdessaFrontend
Викторина | Odessa Frontend Meetup #13Викторина | Odessa Frontend Meetup #13
Викторина | Odessa Frontend Meetup #13
OdessaFrontend147 views
Структуры данных в JavaScript | Odessa Frontend Meetup #13 by OdessaFrontend
Структуры данных в JavaScript | Odessa Frontend Meetup #13Структуры данных в JavaScript | Odessa Frontend Meetup #13
Структуры данных в JavaScript | Odessa Frontend Meetup #13
OdessaFrontend1.6K views
Эффективность с большой буквы Э… или любой другой | Odessa Frontend Meetup #13 by OdessaFrontend
Эффективность с большой буквы Э… или любой другой | Odessa Frontend Meetup #13Эффективность с большой буквы Э… или любой другой | Odessa Frontend Meetup #13
Эффективность с большой буквы Э… или любой другой | Odessa Frontend Meetup #13
OdessaFrontend184 views

Использование Recoil в React и React Native приложениях | Odessa Frontend Meetup #19