React

redux-saga + 클래스 인스턴스 멤버 함수

westone034626 2024. 2. 22. 21:31

redux-saga에서 yield call을 통해 정의해놓은 클래스 인스턴스의 멤버 함수를 호출하려고 보니, 멤버 함수 속 this가 null을 참조하고 있었다.

 

처음에는 클래스 생성자로 인스턴스를 생성할 때 인수 전달이 제대로 안되었나보다 하고 console.log를 찍어가며 디버깅 해보았지만 값은 잘 들어가고 있었다.

 

혹시 몰라 yield call 대신 함수 직접 호출을 해보니 동작이 잘 되었다.

 

이유가 궁금하여 찾았더니 아래 스택 오버 플로우 글을 찾았다.

링크: https://stackoverflow.com/questions/58397875/reference-to-this-is-null-in-function-called-by-redux-saga-call

 

Reference to "this" is null in function called by redux-saga call

I'm learning redux-saga and I'm trying to integrate it into a project that uses an API that is generated with openapi-generator which produces output like the following: async loginUser(body: Logi...

stackoverflow.com

 

*결론: yield call을 통해 인스턴스의 멤버 함수 호출 시 this가 null을 가리키므로 call에 context를 같이 전달하던가, call에 전달하는 함수에 bind 처리해서 this를 직접 정의해줘야한다.

 

this는 호출되는 방식으로 정해진다고 공부할 때 봤었는데, 이렇게 업무를 처리하는 중에 직접 겪어보니 신기했고 자바스크립트 기초는 한없이 강조해도 부족하지 않을만큼 중요하다는 것을 느꼈다.