次のアクションをディスパッチするコンテナがあります。
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 ウォッチャーは、コンポーネントに適用するときにfetchPageTree
適切に using を呼び出しますが、それなしでは実行されません。
エラーもスローされません。 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);