Рубрики
Без рубрики

Наменяющее пространство Redux Тип действия Постоянные значения

Напишите Clear Type Type Constans, не будучи чрезмерно сложным.

Автор оригинала: Cliff Hall.

Большинство всех соглашаются с тем, что определяющие константы для ваших типов действий Redux – хорошая идея. Если вы используете строковые литералы, все слишком легко пропустить один и удивляться, почему ваш редуктор не отвечает. Если вы используете константу, ваша IDE может указать на том гаффе.

Вот пример из документации Redux:

export const ADD_TODO = 'ADD_TODO'
export const TOGGLE_TODO = 'TOGGLE_TODO'
export const SET_VISIBILITY_FILTER = 'SET_VISIBILITY_FILTER'

Поскольку это в документах, вот как большинство проектов вы видите их. Итак, вы спрашиваете, есть ли причина делать это по-другому? Да, есть.

В любом нетривиальном приложении вы, вероятно, определяете константы типа действий и создатели действия, которые используют их в нескольких разных файлах, разделенных функциональной областью. Различные члены команды могут добавлять к ним все время, поэтому константы типа действия в одном файле конфликтуют с одним в другом файле, всегда является возможностью.

Например, рассмотрите, как константы определяли эти два файла:

Статьи. Icues.js.

export const FETCH_REQUESTED = 'FETCH_REQUESTED'
export const FETCH_COMPLETE  = 'FETCH_COMPLETE'
export const FETCH_ERROR     = 'FETCH_ERROR'

profile.ocies.js.

export const FETCH_REQUESTED = 'FETCH_REQUESTED'
export const FETCH_COMPLETE  = 'FETCH_COMPLETE'
export const FETCH_ERROR     = 'FETCH_ERROR'

Если ваши типы действий определены в отдельных файлах, шансы являются редукторами, которые также реагируют на них. Когда вы объединяете свои редукторы, вы, по сути, вы создаете одно большое выявление выключателя, и если у вас есть два типа действий с одинаковым постоянным значением, неправильный блок Cate в конечном итоге будет уволен для одного из них.

Является ли ответ, чтобы сделать постоянные имена и ценности дольше?

export const FETCH_PROFILES_REQUESTED = 'FETCH_PROFILES_REQUESTED'
export const FETCH_PROFILES_COMPLETE = 'FETCH_PROFILES_COMPLETE'
export const FETCH_PROFILES_ERROR    = 'FETCH_PROFILES_ERROR'

Возможно, но это чрезмерно многословный и ненужный.

Помните, что постоянное имя и ценность не должны быть одинаковыми. Вот хороший способ имен пространства ваших постоянных ценностей, сохраняя простые и четкие имена в контексте их использования.

Статьи. Icues.js.

export const FETCH_REQUESTED = 'articles/fetch-requested'
export const FETCH_COMPLETE  = 'articles/fetch-complete'
export const FETCH_ERROR     = 'articles/fetch-error'

profile.ocies.js.

export const FETCH_REQUESTED = 'profiles/fetch-requested'
export const FETCH_COMPLETE  = 'profiles/fetch-complete'
export const FETCH_ERROR     = 'profiles/fetch-error'

В редукторе статей мы знаем, что имеем дело со статьями, поэтому все константы не должны иметь статьи как часть имени. То же самое с редуктором профилей.

Статьи .educer.js.

import { FETCH_REQUESTED, FETCH_COMPLETE, FETCH_ERROR } from '../actions/articles.actions'

PROFILES.REDUCER.JS.

import { FETCH_REQUESTED, FETCH_COMPLETE, FETCH_ERROR } from '../actions/profiles.actions'

Вот и все. Простые постоянные имена с значениями именных значений дадут вам ясность и снижение добросовестности при обеспечении правильных случаев пожара в ваших редукторах.