이 질문을받는 사람은 누구나 알고 있습니다. 저는 redux에 익숙하지 않고 각도 및 서비스 논리에서 비롯되어 있으므로 redux가 작동하는 방식을 알고 있습니다. 나는 서사시 리스너 2 개 (서비스에서 GET 메소드를 호출하고 POST에서는 하나를 호출하는 것) + 서비스 (API에서 데이터를 가져 오는 데 사용) 만 사용하고 있습니다. 그래서 내가 API를 호출 할 때마다 url, param을 포함하는 일부 api 설정을 가진 객체를 만들고 api에 권한 헤더를 포함 시키면 한 번에 하나의 액션을 파견 할 때이 객체가 제대로 작동합니다. 여러 액션을 수행한다는 것은 여러 서비스를 제공하고 서사시 작업을 한 후에 여러 번 가져 오거나 게시하는 것을 의미하며 데이터를 저장하기 위해 감속원에게 가지 않고 오류를줍니다. Actions must be plain objects. Use custom middleware for async actions
내 구현에 문제가 있음을 알고 있습니다. 이런 식으로 작동한다면 나는 위대 할 것이다. 나는 썽크 같은 다른 서비스로 옮겨야한다. 데이터가 서사시에서 감속기로 이동하지 않는 경우
`
GetEpic = (action$) =>
action$.ofType(Action.Get)
.switchMap(({ payload }) => {
let { api, param, reqHeader, waitFor } = payload;
delete payload.api;
delete payload.param;
delete payload.reqHeader;
return HttpService.post(api, param, reqHeader, payload).then((userInfo) => {
if (userInfo.status && userInfo.status != 200) {
return {
type: 'ERROR'
}
}
return this.translateDataAndReturnType(userInfo, api, 'get', waitFor);
}).catch(() => {
return {
type: 'ERROR'
}
})
})
translateDataAndReturnType(data, api, method, waitFor) {
if (data && api) {
this.count += 1;
let actionInfo = this.routesData.find((d, i) => {
return d.route == api
})
let routeAction = Object.assign({}, actionInfo);
routeAction.payload = data;
this.localDate[routeAction.route] = data;
delete routeAction.route;
if (typeof waitFor == 'number') {
this.waitFor = waitFor;
this.count = 0;
this.count += 1;
}
if (this.count == this.waitFor) {
routeAction.payload = this.localDate;
if (this.actions) {
routeAction.type = this.actions;
}
return routeAction;
}
}
}
`
는 대답으로 업데이트
무엇 나는 여러 API를 사용하여 하나의 행동을 이용할 수 있도록 전략을 변경 때문에 가능하지 않은 한 번에 내 구성 요소에서 여러 액션 샷의 응답을 얻기 위해 노력하고 잘못하고 있었다 내가 경로와 JSON을 생성 내가 같은 일부 구성 작업을 호출하는 작업을 호출 할 때마다 너무
`this.routeConfig = {
"countriesCitesTimezone": [
{ route: 'countries', type: 'SUCCESS-COUNTRIES', param: '', reqHeader: false },
{ route: 'cities', param: '', reqHeader: false },
{ route: 'timezone', param: '', reqHeader: false }
]
}`
을 API를하는 것이 다음
`GetEpic = (action$) =>
action$.ofType(Action.Get)
.switchMap(({ payload }) => {
let requests = this.routesConfig[payload.route];
return Observable.forkJoin(
requests.map((d, ind) => {
let param = d.param;
if (payload.params.length > 0) {
param = payload.params[ind];
}
return (HttpService.get(d.route, param, d.reqHeader));
})
).map((x) => {
console.log(x);
let result = {};
requests.map((d, ind) => {
result[d.route] = x[ind]
})
return ({
type: requests[0].type,
payload: result
})
})
})`
코드를 입력하십시오. –
코드를 추가했는데'Action.Get'을'HttpService'에 대한 여러 설정으로 여러 번 호출하면'평범해야합니다 ... '라는 오류 메시지가 나타납니다. –