2017-12-01 2 views
2

와 디스패치 개체의 나는 코드REDUX 액션, 화살표 기능

const ERROR_MSG = 'ERROR_MSG' 

function errorMsg(msg){ 
    return { msg, type:ERROR_MSG } 
} 

export function register({user,pwd,type}){ 

    return dispatch=>{ 
     axios.post('/user/register', {user,pwd,type}) 
      .then(res=>{ 
       if(res.status!==200){ 
        dispatch(errorMsg(res.data.msg)) 
       } 
      }) 
    } 
} 

그것의 파견 PARAM 같은 기능을하고, PARAM 반환 뭔가를받을 아래에서왔다. 나는 그것에 익숙하지 않고 왜 여분의 기능을 만들어야 하는가? errorMsg가 전역이거나 다른 함수가 중복되는 경우에는 의미가 있습니다.

화살표 기능을 사용하면 콜백에서 바로 액션 객체를 전달할 수 있습니까?

dispatch(()=>{res.data.msg, type:ERROR_MSG})

답변

2

와 함께 작업을 파견 단지 수, 대신 dispatch에서 추가 기능을 호출하는, 그러나 실제로 필요하지의 화살표 기능을 즉시 파견 할 수 있습니다 화살표 기능이 아무 것도 반환하지 않고 있음을 알 수 있습니다.

dispatch(()=>{res.data.msg, type:ERROR_MSG}) 

전자 명시 적으로 반환 :

dispatch(()=>{return {res.data.msg, type:ERROR_MSG}}) 

또는 식으로 포장 :

dispatch(()=> ({res.data.msg, type:ERROR_MSG})) 

하거나 파견에 직접 개체를 전달 :

dispatch({msg: res.data.msg, type:ERROR_MSG}) 
+0

또는 이처럼 간단하게 발송할 수 있습니까? 'dispatch ({msg : res.data.msg, type : ERROR_MSG})' –

+0

예. 방금 대답을 –

+2

에 추가했습니다. 아무 것도 반환하지 않는 화살표 함수로 잘못 입력 한 부분을 OP에 표시했습니다. . –

0

예는 객체

return dispatch=>{ 
    axios.post('/user/register', {user,pwd,type}) 
     .then(res=>{ 
      if(res.status!==200){ 
       dispatch({ msg: res.data.msg, type:ERROR_MSG }) 
      } 
     }) 
} 
+0

이 필요 REDUX-썽크입니까? –

+0

예, 액션 제작자는 일반 객체를 반환해야하지만 redux-thunk와 같은 맞춤형 middlewares를 사용하면 비동기 액션 제작자도있을 수 있습니다 –

+0

왜 redux가 기본적으로 비동기 작업을 처리하지 못합니까? 희생양 썽크가 꼭 필요한 것 같아, 흠. –