Boost js state management

18
The battle of state management Ran Wahle Tikal

Transcript of Boost js state management

Page 1: Boost js state management

The battle of state management

Ran WahleTikal

Page 2: Boost js state management

• What is state management?• Presenting our app• Same app – The Redux way• Same app – The Mobx way• Summary

Page 3: Boost js state management

A little bit about me• Javascript developer at Tikal• Consultant, speaker• Volunteering programmer• Poor UI designer

Page 4: Boost js state management

Why state management

Component Component

Component

Component

Provider

Provider

Provider

Page 5: Boost js state management

Why state management

Component Component

Component

Component

Provider

Provider

ProviderProvider

Provider

Provider

Component

Component

Component

Component

Page 6: Boost js state management

State Management

Component Component

Component

Component

Provider

Provider

Provider

Store

Page 7: Boost js state management

State management gives us• One store to rule them all• Better debugging (~)

Page 8: Boost js state management

Demo – Call-canter Management app

Page 9: Boost js state management

The Redux way• Actions• Reducers• Middlewares

Page 10: Boost js state management

Redux pipeline

Dispatch action Apply middleware logic

Run reducer code

Page 11: Boost js state management

Redux to ngrx glossary dictionaryRedux ngrx

State State

Reducer Reducer

Middleware Effect

Selector Selector

Action Action

Page 12: Boost js state management

The Mobx way• Decorates your model • Create your store

Page 13: Boost js state management

Why Mobx• It is automatic easy• It reduces your code to minimum

Page 14: Boost js state management

And why not?• It may be too easy• It couples your model with logic• It is less testable than redux

Page 15: Boost js state management

Some best practices• Connect only smart component to the store • Use store for reusable data• Wish to preserve state for single screen?

Preserve limited data only.

Page 16: Boost js state management

Summary• We’ve seen two ways for state management• There is a manual, more testable and more complex one• We’ve seen automatic, less testable and more ”magical” one

Page 17: Boost js state management

Other resources• Good performance benchmark

https://twitter.com/mweststrate/status/718444275239882753• Redux page on github

https://github.com/reactjs/redux • Mobx page on github

https://github.com/mobxjs/mobx • Chrome extensions:

Mobx - https://chrome.google.com/webstore/detail/mobx-developer-tools/pfgnfdagidkfgccljigdamigbcnndkod

Redux - https://chrome.google.com/webstore/detail/redux-devtools/lmhkpmbekcpmknklioeibfkpmmfibljd