2016-09-01 8 views
1

общего соглашения при использовании Redux для хранения действий в их собственном файле, как const с, как это:использовать число Redux действия имена

export const USER_AUTH_ATTEMPT = 'USER_AUTH_ATTEMPT'; 
export const USER_AUTH_CHECK = 'USER_AUTH_CHECK'; 
export const USER_AUTH_FAIL = 'USER_AUTH_FAIL'; 
export const USER_AUTH_SUCCESS = 'USER_AUTH_SUCCESS'; 
export const USER_AUTH_LOGOUT = 'USER_AUTH_LOGOUT'; 

Значения имени действия, как правило, string. Будет ли какое-либо преимущество в использовании конвенции, как это вместо ?:

export const USER_AUTH_ATTEMPT = 0; 
export const USER_AUTH_CHECK = 1; 
export const USER_AUTH_FAIL = 2; 
export const USER_AUTH_SUCCESS = 3; 
export const USER_AUTH_LOGOUT = 4; 

Значение для действий будет храниться в виде целых чисел, которые могли бы уменьшить размер файла. Были ли какие-либо негативные последствия для этого?

+0

Да, было бы здорово разрешить ints как типы действий, потому что они могут использовать функции перечисления машинописного текста и иметь строгое типичное действие типа. – Dmitri

ответ

5

В архитектуре redux действия отправляются в магазин, а не один редуктор. Таким образом, вы можете иметь несколько редукторов, которые реагируют на одно и то же действие. Вот почему у вас есть ветвь default: return state в ваших операторах switch внутри редукторов.

Если вы сделаете это, вы должны быть абсолютно уверены, что никакие два действия не имеют одинакового идентификатора номера, что сложнее, чем со строками.

Другая важная причина - отладка, например, с помощью redux-logger (это приведет к печати чисел вместо полезных описательных имен действий).

Редактировать: Ответ Qianyue дает еще одну отличную причину, чтобы не делать этого.

+0

Это оба отличные ответы - спасибо! – edcs

3

Том дал хороший ответ, здесь я просто хочу закончить немного больше. Учитывая большой проект, есть более чем 1 разработчик. Разработчик A хочет добавить действие, он проверяет список действий, он обнаруживает, что 5 - это бесплатный номер, поэтому он определяет свое новое действие с 5. Между тем, разработчик B также хочет добавить действие, то же самое, он определяет его новые действия с 5. Взрыв, конфликт.

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