我有一个调度以下操作的容器:
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');
}
saga watcher在组件中应用时调用fetchPageTree
正确使用,但没有执行。
也不会抛出任何错误。 takeEvery
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);