Javascript redux传奇没有';我第一次不工作
我有一个redux传奇,如下所示:Javascript redux传奇没有';我第一次不工作,javascript,reactjs,redux,react-redux,redux-saga,Javascript,Reactjs,Redux,React Redux,Redux Saga,我有一个redux传奇,如下所示: export function* loadApplianceSaga() { try { let {request, success, error} = yield take(ActionTypes.APPLIANCE.LOAD); request.url = yield select(getResourceLink, request.resource); const response = yield call(makeReques
export function* loadApplianceSaga() {
try {
let {request, success, error} = yield take(ActionTypes.APPLIANCE.LOAD);
request.url = yield select(getResourceLink, request.resource);
const response = yield call(makeRequest, request);
if (!response.error) {
yield put({type: success, payload: response.body});
} else {
yield put({type: error, payload: response});
}
} catch (e) {
yield put({type: ActionTypes.REQUEST.CALL_ERROR, error: e});
}
}
export function* watchLoadAppliance() {
while (true) {
yield* takeEvery(ActionTypes.APPLIANCE.LOAD, loadApplianceSaga);
}
}
和根传奇:
export default function* rootSaga() {
yield [
fork(watchLoadAppliance)
]
}
我遇到了一个问题,loadApplianceSaga
在第一时间不起作用。我在日志中看到,第一次它只调度ActionTypes.APPLIANCE.LOAD
action,然后不调度任何操作。但在第二次,我可以看到发送的成功操作或失败操作
谁能告诉我出了什么事?提前谢谢
更新的操作:
export const loadAppliances = () => {
return {
type: ActionTypes.APPLIANCE.LOAD,
request: {
resource: Resources.Appliances,
param: {
page: 0,
size: 5,
sort: 'name,desc'
},
header: {
Accept: 'application/json'
}
},
success: ActionTypes.APPLIANCE.LOAD_SUCCESS,
error: ActionTypes.APPLIANCE.LOAD_ERROR
}
};
您已经使用了两次
take
。
试一试
这个动作包括{request,success,error}吗?是的,这个动作包括所有的动作。我添加了动作@乌特罗坦感谢你!这很有效。你能解释一下我为什么会遇到这个问题吗?我是ReDux Saar的新手。我想,你不应该改变动作@ AnNguyenoh,我会考虑的。谢谢关于这个问题。。我想,您已经尝试通过loadApplianceSaga中的附加
采取
效果来获得该操作,但是采取每一项
所有准备就绪将其传递给loadApplianceSaga@AnNguyen
export function* loadApplianceSaga(action) {
try {
let {request, success, error} = action;
request.url = yield select(getResourceLink, request.resource);
const response = yield call(makeRequest, request);
if (!response.error) {
yield put({type: success, payload: response.body});
} else {
yield put({type: error, payload: response});
}
} catch (e) {
yield put({type: ActionTypes.REQUEST.CALL_ERROR, error: e});
}
}
export function* watchLoadAppliance() {
while (true) {
yield* takeEvery(ActionTypes.APPLIANCE.LOAD, loadApplianceSaga);
}
}