Давайте немного про ФП?

 

 

  • Всегда предсказуемое состояние
     
  • Никак не зависим от окружения
     
  • Контроль над зависимыми событиям
     
  • Высокая отказоустойчивость
     
  • Просто прекрасные дев-тулы

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

  • 999
Loading comments...

More from Roman Iakobchuk