2017-10-03 21 views
1

구성 요소에는 onClick이 반입 반입 삭제 요청을 보내는 deleteQuestion 액션을 전달하는 버튼이 있습니다. 응답을 받으면 다른 액션이 호출됩니다. Redux 상점을 갱신하십시오.응답 onClick delete dispatch는 응답을받은 후 두 번째 디스패치 요청을 보내지 않습니다.

그러나 onClick 이벤트이므로 deleteQuestion 썽크 함수는 ComponentWillMount에서 만들어진 일반적인 디스패치 요청처럼 작동하지 않고 대신 절대로 호출되지 않는 디스패치 매개 변수가있는 익명의 함수를 반환합니다. 따라서, 그래서 같이 온 클릭 방법으로 두 번 동시에 파견을 호출 할 필요 해요 :이 방법은, 내가 응답을 받고, 두 번째 파견 레일 백엔드에 삭제 요청을 트리거링을위한 효과적인

handleDelete =() => { 
    const { questionId } = this.props.match.params 
    const { history } = this.props 
    deleteQuestion(questionId, history)(deleteQuestion); //calling method twice 
    } 

동안 (deleteQuestion (questionId)) deleteQuestion 액션에 임베드 한 함수가 Redux 저장소를 업데이트하기 위해 트리거되지 않습니다. 여러 디버거를 저장소에 배치하고 콘솔과 터미널에서 오류를 확인하려고 시도했지만 아무 것도 발생하지 않습니다.

온라인에서 Redux 문서 및 기타 리소스를 통해 읽었으며, .then 요청에서 두 번째 디스패치 호출을 포함 할 수 있어야한다는 것을 알게되었습니다. get, post 및 patch 요청에서이 작업을 수행 할 수는 있지만 삭제 요청에서 작동하지 않는 이유는 알 수 없습니다.

export function deleteQuestion(questionId, routerHistory) { 
    return (dispatch) => { 
    fetch(`${API_URL}/questions/${questionId}`, { 
     method: 'DELETE', 
    }).then(res => { 
     dispatch(removeQuestion(questionId)) 
    }) 
    } 
} 

그리고 github에는 다음과 같습니다 :

내가 할 썽크 호출은 내가 이틀 동안이 통과려고 했어요 나는 정말 어떤 통찰력을 감사하겠습니다 https://github.com/jwolfe890/react_project1/blob/master/stumped-app-client/src/actions/questions.js

지금!

+0

이 구성 요소의 'mapDispatchToProps'모양은 무엇입니까? – topher

+0

작업을 가져온 다음 연결 함수에 포함시킵니다. – Dog

+0

기본 연결 내보내기 (mapStateToProps, {deleteQuestion}) (questionCard); – Dog

답변

1

귀하의 상점에서 직접 삭제 조치를 보내지 않고 deleteQuestion 조치를 호출하고 있습니다. 대신 이미 파견에 매핑되는 사용자의 소품에서 deleteQuestion을 호출해야합니다 : 당신이 mapDispatchToProps로 객체에 전달하면 각 요소 파견 호출

handleDelete =() => { 
    const { questionId } = this.props.match.params 
    const { history } = this.props 
    this.props.deleteQuestion(questionId, history); 
} 

입니다. 즉, mapDispatchToProps은 다음과 같습니다 :

(dispatch) => ({ 
    deleteQuestion: (...params) => dispatch(deleteQuestion(...params)) 
}) 
+0

아. 정말 고마워. 나는이 구성 요소를 너무 땜질 done다가 this.props를 다시 추가하는 것을 잊었다! – Dog

+0

어떻게 든 어제 그것은 레일 백엔드를 치지 않고 있었지만 마술처럼 지금 거기에서 작업하고 있습니다. 다시 한 번 감사드립니다! – Dog