1

次のアクションをディスパッチするコンテナがあります。

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 を呼び出しますが、それなしでは実行されません。 エラーもスローされません。 takeEverysetTimeoutfetchPageTree

原因について何か考えはありますか?

編集:
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); 
4

1 に答える 1

0

render関数をいつ呼び出しましたか?render 関数が の後sagaMiddleware.run(rootSaga);に呼び出された場合、 の遅延呼び出しが機能するはずですthis.props.getPageTree

于 2017-03-10T02:05:15.750 に答える