Какая польза от ActionTypes во Flux?

Я следую первому руководству по Flux по адресу https://github.com/facebook/flux/tree/master/examples/flux-todomvc

Я немного не понимаю, что на самом деле делает файл TodoActionTypes.js.

Если что-то неясно в том, что я спрашиваю, пожалуйста, дайте мне знать, и я постараюсь прояснить ситуацию.

Я попытаюсь объяснить с помощью onToggleTodo в AppView:

<AppView /> renders <Main /> which has props.onToggleTodo which is triggered on onChange.

Итак, onChange запускает TodoActions.toggleTodo.

Из TodoActions запускается toggleTodo, и это отправляет действие с типом и идентификатором в магазины.

toggleTodo(id) {
    TodoDispatcher.dispatch({
        type: TodoActionTypes.TOGGLE_TODO,
        id,
    });
},

В TodoActionTypes.js есть:

const ActionTypes = {
    ...
    TOGGLE_TODO: 'TOGGLE_TODO',
};

в TodoStore.js есть

switch (action.type){
    case TodoActionTypes.TOGGLE_TODO:

Мой вопрос: почему это необходимо, а не просто везде иметь «TOGGLE_TODO»?


person LiamG_G    schedule 12.09.2017    source источник


Ответы (1)


Этот шаблон дает много преимуществ по сравнению с использованием литеральных строк:

  • Ошибки, возникающие в результате неправильного ввода значения вручную, гораздо легче отслеживать. Если бы вы использовали инструмент проверки типов, такой как TypeScript, компилятор четко отметил бы это. По крайней мере, вы увидите undefined вместо очень похожего значения, которое ваши глаза автоматически сочтут правильным.
  • В этом случае редакторы, поддерживающие рефакторинг, могут это сделать.
  • Значение может быть легко изменено (как его значение, так и/или тип). Например, вы можете решить, что вы хотите использовать значения в качестве битовой маски, и поэтому вам придется изменить тип на целые числа.
  • Он предоставляет четкий список возможных TodoActionTypes для других участников проекта.
  • Он предоставляет возможность программного доступа и анализа возможного TodoActionTypes (например, с помощью цикла for..in).
person Marty    schedule 13.09.2017