program story

redux에서 상수의 요점은 무엇입니까?

inputbox 2020. 11. 24. 07:58
반응형

redux에서 상수의 요점은 무엇입니까?


예를 들어이 예에서 :

export const ADD_TODO = 'ADD_TODO'
export const DELETE_TODO = 'DELETE_TODO'
export const EDIT_TODO = 'EDIT_TODO'
export const COMPLETE_TODO = 'COMPLETE_TODO'
export const COMPLETE_ALL = 'COMPLETE_ALL'
export const CLEAR_COMPLETED = 'CLEAR_COMPLETED'

캐릭터를 저장하는 것과는 다릅니다. 변수 이름은 문자열과 정확히 동일하며 변경되지 않습니다. 언젠가는 다음과 같은 일을한다면 상수를 만드는 것을 이해합니다.

ADD_TODO = 'CREATE_TODO'

하지만 그런 일은 일어나지 않습니다. 그렇다면이 상수는 어떤 용도로 사용됩니까?


비슷한 Github 문제에 대한 의견에서 Redux의 저자 인 @dan_abramov 를 인용하고 싶습니다 .

이것이 왜 유익합니까? 상수가 불필요하다고 종종 주장되며 소규모 프로젝트의 경우 이것이 맞을 수 있습니다. 대규모 프로젝트의 경우 작업 유형을 상수로 정의하면 몇 가지 이점이 있습니다.

  • 모든 작업 유형이 한 곳에서 수집되기 때문에 이름을 일관되게 유지하는 데 도움이됩니다.

  • 새 기능을 작업하기 전에 기존의 모든 작업을 확인하려는 경우가 있습니다. 필요한 작업이 이미 팀의 누군가에 의해 추가되었지만 몰랐을 수도 있습니다.

  • Pull Request에서 추가, 제거 및 변경된 작업 유형 목록은 팀의 모든 구성원이 새로운 기능의 범위와 구현을 추적하는 데 도움이됩니다.

  • 액션 상수를 가져올 때 오타를 만들면 정의되지 않습니다. 액션이 전달되었을 때 아무 일도 일어나지 않는 이유가 궁금 할 때 오타보다 훨씬 쉽게 알아 차릴 수 있습니다.

다음은 Github 문제에 대한 링크입니다.


당신이 맞습니다. 문자를 저장하는 것이 아니라 코드 축소 후에 약간의 공간을 절약 할 수 있습니다.

redux에서는 리듀서와 액션 생성 중에 적어도 두 곳에서 이러한 상수를 사용합니다. 따라서 일부 파일에서 상수를 한 번 정의하는 것이 훨씬 편리합니다.actionTypes.js

export const ADD_TODO = 'ADD_TODO';
export const DELETE_TODO = 'DELETE_TODO';
export const EDIT_TODO = 'EDIT_TODO';
export const COMPLETE_TODO = 'COMPLETE_TODO';
export const COMPLETE_ALL = 'COMPLETE_ALL';
export const CLEAR_COMPLETED = 'CLEAR_COMPLETED';

그런 다음 작업 생성자 파일에 필요합니다. actions.js

import { ADD_TODO } from './actionTypes';

export function addTodo(text) {
  return { type: ADD_TODO, text };
}

그리고 일부 감속기에서

import { ADD_TODO } from './actionTypes';

export default (state = [], action) => {
  switch (action.type) {
    case ADD_TODO:
      return [
        ...state,
        {
          text: action.text,
          completed: false
        }
      ];
    default:
      return state
  }
};

프로젝트 전체에서 상수의 모든 사용법을 쉽게 찾을 수 있습니다 (IDE를 사용하는 경우). 또한 오타로 인한 어리석은 버그가 발생하는 것을 방지합니다.이 경우 ReferenceError즉시 오류가 발생 합니다.


This is more useful in other languages, but also somewhat useful in JavaScript. For instance, if I used "ADD_TODO" throughout the code, instead of ADD_TODO, then if I make a mistake typing any of the strings, if it was code like, if (action === 'ADD_TODOz'), when that code executes, it will do the wrong thing. But if you mistyped the name of the const, if (action === ADD_TODOz), you'll get som kind of a ReferenceError: ADD_TODOz is not defined when that line attempts to execute -- because ADD_TODOz is an invalid reference. And, of course, in a static language, you'll get an error at "compile time."

참고URL : https://stackoverflow.com/questions/34965856/what-is-the-point-of-the-constants-in-redux

반응형