0
호출 내가 가지고있는 다음과 같은 작업을 전달 컨테이너 : (이에 소품 컨테이너를 통해 전송되는) 내가 추가 한 내 구성 요소에서REDUX-사가 takeEvery 만의 setTimeout
const mapDispatchToProps = (dispatch, ownProps) => {
return {
getPageTree: (siteId) => {
dispatch(getPageTree(siteId));
}
}
}
const explorer = connect(
mapStateToProps,
mapDispatchToProps
)(Explorer);
을 :
componentWillMount(){
setTimeout(() => this.props.getPageTree());
}
는 무용담은 :
는function* fetchPageTree(action){
try{
const data = yield call(Api.fetchPageTree, action.payload.url);
yield put({type: 'FETCH_SUCCEEDED', data});
}catch(error){
yield put({type: 'FETCH_FAILED', error})
}
}
export function* watchFetchData(){
console.log('watch');
yield* takeEvery('GET_PAGETREE', fetchPageTree);
console.log('finish watch');
}
무용담 감시자는 fetchPageTree
제대로를 사용하여 호출 구성 요소에 setTimeout
을 적용하면이 표시되지만 fetchPageTree
은 실행하지 않습니다.
오류가 발생하지 않습니다.
원인에 대해 알고 싶습니까?
편집 :
index.es6 파일은 다음 초기화 로직을 포함하고 있지만, 전체 표준은 다음과 같습니다
const sagaMiddleware = createSagaMiddleware();
const store = createStore(
appReducers, //Combined reducers
applyMiddleware(sagaMiddleware)
);
render(
<Provider store={store}>
<App />
</Provider>,
document.getElementById('zp-app')
)
sagaMiddleware.run(rootSaga);
getPageTree (siteId)는 무엇을 반환합니까? setTimeout을 적용하면 무엇을 의미합니까? – baisang
@baisang pageTree를 얻기 위해 action 객체를 반환하는 액션 생성자입니다. 문제는 사가 (saga) 전에 컴포넌트 메소드가 호출된다는 사실과 관련이 있다고 생각합니다. setTimeout을 사용하면 함수가 실행되기 전에 다른 프로세스가 완료 될 수 있습니다. 이 문제를 현재 어떻게 해결할 지 모르겠습니다. – Trace
setTimeout() 및 getPageTree (siteId)의 액션 출력이 같은 형식입니까? – baisang