swsnu / swppfall2020

28 stars 17 forks source link

Redux 비동기 actionCreators 리턴 값 dispatch 인자에 관한 질문 #152

Closed sugsugsug closed 4 years ago

sugsugsug commented 4 years ago

안녕하세요. redux를 공부하다가 dispatch 인자와 actionCreators 리턴 값(함수)에 대한 의문이 생겨 질문드립니다.

아래는 Login.js 의 mapDispatchToProps 부분입니다. image

원래는 윗부분처럼 구현했었는데, 실제 getUsers()의 return 값을 보면 의문이 듭니다.

image 화살표 함수를 return 하기에 dispatch를 인자로 넘겨주어야 함수가 잘 실행될 것 같습니다.

image

이렇게 바꾸는게 자연스럽다고 생각됩니다. 실제로도 잘 동작하구요. 실제 저런 방식으로 node에서 실험했을때 위 아래 결과가 다르게 나오는 걸 어느정도는 확인했는데, dispatch에 대해서는 예외적인 룰이 있는건가요?

ChanwooLucioLee commented 4 years ago

읽어도 이해가 잘 안 되는데 무엇이 무엇으로 바뀌는 게 좋겠다는 말씀이신가요?

jaewooklee93 commented 4 years ago

@ChanwooLucioLee

getUsers()가 반환하는 값을 A라고 부르면 A는 함수이고 signature가 dispatch => {...} 인데,

3번째 캡처와 같이 A(dispatch) 라고 쓰지 않고 1번째 캡처처럼 dispatch(A)로 쓰는 것이 이상하다는 말씀인 것 같습니다

제가 보기에도 이상한 것 같네요..

sugsugsug commented 4 years ago

확인은 못해봤지만 제 생각에 dispatch라는 함수의 구조가

  1. dictionary를 인자로 받으면, 그대로 action취급해서 store에 보내 실제 dispatch하고
  2. function을 인자로 받으면, 그 function을 호출하면서 dispatch를 인자로 삼는 구조인 것 같습니다. 아마 dispatch 함수를 쓸때 가독성을 위해 이런 구조가 만들어졌지 싶습니다.

+다시 찾아보니 redux docs https://redux.js.org/api/store#dispatchaction https://redux.js.org/api/applymiddleware 에 applyMiddleware를 쓰면 dispatch를 wrapping 한다고 되어있네요.

의문이 생기면 우선 docs를 좀더 자세히 읽어봐야 겠다는 생각이 듭니다.