Давайте немного про ФП?
-
Всегда предсказуемое состояние
-
Никак не зависим от окружения
-
Контроль над зависимыми событиям
-
Высокая отказоустойчивость
- Просто прекрасные дев-тулы
2 + 2 = 4
сервер, браузер... да хоть мобильное приложение
ну, это для тех, кто побывал в колбечном аду
чистые функции не ломаются
ивент-сорсинг, тайм-тревел и остальное счастье
Store
Один Immutable object
Current State
Final State
New State
Action
New State
Action
Action
Dispatcher
store.dispatch({
type: INCREMENT,
payload: {amount}
})
store.subscribe(callback)
Action-creators
сделаем чистыми функции
- Отсутствие диспетчера
- Возвращает Action как плоский объект
function increment(amount) {
return {
type: INCREMENT,
payload: {amount}
}
}
Stores => Reducers
так-же чистые функции
function counter(number = 0, action) {
const {type, payload} = action
return type == INCREMENT
? number + payload.amount
: number
}
- не сохраняют состояние
- не зависят от окружения
Redux flow
Action Creator
Reducers
Store
UI
dispatch
А где сайд-эффекты?
- API calls
- Logging
- Reporting
- ...
Middleware
Full Redux flow
Action Creator
Middlewares
Reducers
Store
UI
dispatch
Side-effects
Middleware
- Централизованные сайд-эффекты
- Единственное отличие
- сервера от клиента,
- прод от дев окружения
- Единый Code-base!
Делайте крутые проекты!
Роман Якобчук
Skype: r.iakobchuk
Email: r.iakobchuk@gmail.com
Redux for new react course
By Roman Iakobchuk
Redux for new react course
- 1,471