Redux와 함께 Named Exports를 사용하여 쉽게 리팩토링하는 방법

Redux와 함께 Named Exports를 사용하여 쉽게 리팩토링하는 방법 이 블로그 포스트에서는 Redux와 함께 이름이 지정된 내보내기(named exports)의 사용과 connect 함수를 사용할 때 이름이 지정된 내보내기를 사용할 수 없는 문제를 해결하는 방법에 대해 논의하겠습니다. 문제 JavaScript에서 …

title_thumbnail(Redux와 함께 Named Exports를 사용하여 쉽게 리팩토링하는 방법)

Redux와 함께 Named Exports를 사용하여 쉽게 리팩토링하는 방법

이 블로그 포스트에서는 Redux와 함께 이름이 지정된 내보내기(named exports)의 사용과 connect 함수를 사용할 때 이름이 지정된 내보내기를 사용할 수 없는 문제를 해결하는 방법에 대해 논의하겠습니다.

문제

JavaScript에서 이름이 지정된 내보내기에 익숙하다면, Redux와 connect 함수를 다룰 때 왜 이름이 지정된 내보내기를 간단히 사용할 수 없는지 궁금할 수 있습니다.

다음과 같은 코드에서:

class Something extends Component { ... }

export default connect(mapStateToProps)(Something);

connect 함수가 컴포넌트를 Redux 상태에 매핑해야하기 때문에 export 키워드를 클래스 자체에 배치할 수 없는 것으로 보입니다.

해결책 1: 상수 사용

이 제한을 해결하는 한 가지 방법은 컴포넌트를 상수에 할당하고 해당 상수를 내보내는 것입니다:

class Something extends Component { ... }

export const ConnectedSomething = connect(mapStateToProps)(Something);

이제 이름이 지정된 내보내기를 사용하여 연결된 컴포넌트를 가져올 수 있습니다:

import { ConnectedSomething } from './...';

해결책 2: 별개의 컴포넌트 생성

또 다른 접근 방식은 다른 클래스 이름을 가진 별개의 컴포넌트를 생성하고 연결된 고차 컴포넌트(HOC)를 원하는 이름으로 내보내는 것입니다. 다음은 예시입니다:

class SomethingComponent extends Component { ... }

export const Something = connect(mapStateToProps)(SomethingComponent);

이름이 지정된 내보내기를 사용하여 연결된 컴포넌트를 원하는 결과를 얻을 수 있습니다.

해결책 3: 인덱스 파일 사용

컴포넌트를 별도의 파일로 구성하는 것을 선호하는 경우, 인덱스 파일을 사용하여 명칭 충돌 없이 연결된 컴포넌트를 내보낼 수 있습니다. 다음은 방법입니다:

폴더 안에 index.ts 파일을 생성하고 거기에서 컴포넌트를 내보내세요:

export { default as SomethingComponent } from './SomethingComponent.tsx';

SomethingComponent.tsx 파일에서 컴포넌트를 평소처럼 정의하세요:

class SomethingComponent { ... }

export default SomethingComponent;

이제 연결된 컴포넌트를 가져와야 하는 다른 컴포넌트에서 인덱스 파일의 이름이 지정된 내보내기를 사용할 수 있습니다:

import { SomethingComponent } from '[폴더]';

결론

connect 함수로 인해 Redux에서 이름이 지정된 내보내기를 직접적으로 사용할 수 없는 것처럼 보일 수 있지만, 이러한 문제를 해결할 수 있는 여러 가지 해결책이 있습니다. 연결된 컴포넌트를 상수에 할당하거나 별개의 클래스 이름을 가진 별도의 컴포넌트를 생성하거나 인덱스 파일을 사용함으로써 Redux 애플리케이션에서 이름이 지정된 내보내기를 효과적으로 사용할 수 있습니다.

이러한 해결책은 유연성과 리팩토링의 편의성을 제공하여 Redux 구현을 최대한 활용할 수 있게 해줍니다.

참고 자료 :

https://stackoverflow.com/questions/54449350/named-exports-with-redux

같은 카테고리의 다른 글 보기 :

reactjs

Leave a Comment