Перейти к содержанию

Константы

Константы одна из первых тем для холиваров. Как их лучше делать, где размещать и так далее. Мы возьмем такой способ: будем определять константу рядом с экшеном.

src/actions/PageActions.js

1
2
3
4
5
6
7
8
export const SET_YEAR = 'SET_YEAR' // положили строку в константу

export function setYear(year) {
  return {
    type: SET_YEAR, // изменили строку на константу
    payload: year,
  }
}

Подключим константу в редьюсер Page

src/reducers/page.js

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
import { SET_YEAR } from '../actions/PageActions'

const initialState = {
  year: 2018,
  photos: [],
}

export function pageReducer(state = initialState, action) {
  switch (action.type) {
    case SET_YEAR: // изменили строку на константу
      return { ...state, year: action.payload }

    default:
      return state
  }
}

В дальнейшем мы будем придерживаться такого подхода и добавлять константы для всех типов наших экшенов. Зачем мы это делаем, сказать сложно. Попробую придумать пример: вы решили, что все ваши типы теперь должны быть составными строками module name/action type, получается для SET_YEAR будет:

1
const SET_YEAR = 'page/SET_YEAR'

При подходе с константами, вам потребуется изменит код лишь в одном месте (в определении константы).

Итого: превратили строковое значение в константу и познакомились с данным подходом организации типов экшенов.

Исходный код.

Комментарии