0
저는 Promise/thunk를 미들웨어로 사용하고 있습니다. 그것은 위대한 작품.promise/thunk를 사용하여 감속기로 인수 인수
알아낼 수없는 일이 있습니다. 다음 작품 :
가this.props.dispatch(addTag({ name: name, photoId: this.props.photoId}))
내 작업을 썽크에 싸여 아약스를 실행하고 약속 반환 :
export function addTag(payload) {
var url = "/api/photos/".concat(payload.photoId, "/addtag?name=" ,payload.name)
return function(dispatch) {
var request = new Request(url, {headers: headers});
fetch(request)
.then((response) => {
dispatch({type: "ADD_TAG", payload: response.json()})
})
.catch((err) => {
dispatch({type: "ADD_TAG", payload: err})
})
}
}
을하고 만회를 집어
내 구성 요소에서 작업을 파견 :
case 'ADD_TAG_FULFILLED': {
newState = state
.set('tags', action.payload.tags)
.set('inputValue', '')
return newState
}
이제 액션에 전달되는 페이로드를 감속기? (내가 상태로 돌아가서 구성 요소로 돌아가려면 ... 나는 썬크와 약속 미들웨어 기능을 "깨뜨리는"것을 혼합하여이 작업을 수행 할 수 있습니다.이게 최상의 솔루션입니까?
export function addTag(payload) {
var url = "/api/photos/".concat(payload.photoId, "/addtag?name=" ,payload.name)
return function(dispatch) {
var request = new Request(url, {headers: headers});
fetch(request)
.then((response) => {
return (response.json())
})
.then((json) => {
dispatch({type: "ADD_TAG", payload: {suggestions: json, pl: payload})
})
.catch((err) => {
dispatch({type: "ADD_TAG", payload: err})
})
}
}
왜 당신이 미들웨어 기능을 깨고 말을 할 – Lucas
문제의 구성 요소는 새로운 REDUX 상태를 받아야한다 (구성 요소 상태와 혼동하지 말 것) 소품으로 사용하고 계십니까? eact-redux '와 connect() 함수를 사용하면 어떻게됩니까? – ferndopolis
당신이 파견 할 수있는 한 행동을 발동하고 페이로드를 감속기에 전달할 수 있습니다. ->이 예에서는 페치가 성공적으로 수행 된 경우에만 페이로드를 전달합니다. 항상 디스패치하려는 경우 catch 문 다음 약속에서 수행하십시오. (당신이 원하는대로 체인 수 있습니다) – Mateusz