본문 바로가기

React/REDUX

[리덕스 사가 공식문서번역] 이팩트에 대한 일반적인 추상화 / A common abstraction: Effect

https://redux-saga.js.org/docs/basics/Effect

 

Effect | Redux-Saga

A common abstraction: Effect

redux-saga.js.org

본 글은 리덕스 사가 공식문서를 번역한 글입니다.(*주의 : 필자의 의역이 섞여있습니다. )


더보기

To generalize, triggering Side Effects from inside a Saga is always done by yielding some declarative Effect. (You can also yield Promise directly, but this will make testing difficult as we saw in the first section.)

What a Saga does is actually compose all those Effects together to implement the desired control flow.

The most basic example is to sequence yielded Effects by putting the yields one after another.

 

You can also use the familiar control flow operators (if, while, for) to implement more sophisticated control flows.

We saw that using Effects like call and put,

combined with high-level APIs like takeEvery allows us to achieve the same things as redux-thunk,

but with the added benefit of easy testability.

But redux-saga provides another advantage over redux-thunk.

In the Advanced section you'll encounter some more powerful Effects that let you express complex control flows while still allowing the same testability benefit.

 

 

일반화해보자면, 사가 안에서 사이드이팩트를 발생시키는 것은 항상 선언적인 이팩트를 생성함으로써 행해집니다. 

(또한 프로미스를 직접 생성할 수도 있겠지만, 이는 테스트하는 것을 어렵게 만들 것입니다. 우리가 첫번째 섹션에서 봤던것처럼. )

 

사가가 하는 일이 무엇이냐면,  원하는 제어흐름을 수행하기 위해서 그런 이펙트들을 구성하는 것입니다.

가장 간단한 예시가 있다면,  yields 를 하나하나씩 놓음으로써 연속적으로 이팩트를 생성하는 것이라고 볼 수 있겠지요? 

또한 여러분들은 조금 더 정교한 흐름을 제어하기 위해서, 익숙하게 사용하던 제어연산자(조건문이나, 반복문)도 사용할 수 있습니다.

 

우리는 call이나 put이라는 이팩트와 , takeEvery와 같이 조금더 높은 단계의 api를 사용함으로써, 리덕스 썽크에서 성취하던 것을 

그대로 사용할 수 있는 것을 확인했습니다. 추가적으로 말하자면, 더 테스트하기 쉽다는 이점도 있지요😎

 

하지만, 리덕스 사가는 리덕스 성크를 넘어 또 다른 이점을 제공합니다. (리덕스 사가가 더 좋습니다!!)

고급섹션에서는 훨씬 더 파워풀한 이팩트도 보게 될 것입니다. 그 이팩트들은 테스트를 쉽게하도록 이점을 제공해주는 동시에,

더 복잡한 흐름을 표현할 수 있게 해줍니다.