Redux-Saga-yield all不会在root saga中调用我的所有sagas

时间:2019-04-11 09:20:23

标签: react-redux redux-saga

我在同一页面上有两个传奇人物,但结果只有一个传奇人物。 另一个传奇没有执行,我看不到结果。

AdminFolder

dashboard.js

               const mapStateToProps=state=>{
                console.log(state)
                return{   
                    dataSales:state.salesDataReducer,
                    mostBrought:state.mostBroughtReducer
                }
                };

                const mapDispatchToProps = {
                    getSales:getSales,
                    getMostBrought:getMostBrought
                };

rootSaga / rootSaga.js

                import actionWatcherSalesData from '../adminDashboard/salesDataSaga';
                import actionWatcherMostBrought from '../adminDashboard/mostBroughtSaga';
                import {all,call} from 'redux-saga/effects';



                export default function *rootSaga(){
                    yield all([
                    call( actionWatcherSalesData), //works
                    call(actionWatcherMostBrought)// this saga doesn't call up no data found 
                    ]);
                }

                    export default function *rootSaga(){
                    yield all([
                    fork( actionWatcherSalesData),
                    fork(actionWatcherMostBrought)//doesnt work
                    ]);
                }

saga1.js

 yield takeLatest(GET_SALES_DATA,getSales)

saga2.js

 yield takeLatest(GET_MOST_BROUGHT_DATA,getMostBrought);

是引起问题的TakeLatest吗?

1)由于相同的页面数据,两个调用都必须异步发生,但是第二个saga调用没有被调用? 2)我怀疑对于其他页面上的应用程序,我只有一个按钮才能单击,它必须调用saga,应该在此处包含它吗?

在此呼叫中,前叉都无法正常工作。请让我知道我要去哪里了。我错过了什么吗? 任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

我的进口错了

以下内容就像一个魅力:)

public static boolean checkOnNonNull(Context context, Class<?> clazz) {
    Intent service = new Intent(context, clazz);
    ResolveInfo rInfo = context.getPackageManager().resolveService(service, PackageManager.GET_SHARED_LIBRARY_FILES);
    ServiceInfo sInfo = rInfo != null ? rInfo.serviceInfo : null;
    if (sInfo == null) {
        Timber.e("Unable to start service " + service + ": not found");
        return false;
    }
    return true;
}

if (!checkOnNonNull(context, MyServiceClass.class)) {
    ComponentName component = new ComponentName(getPackageName(), MyServiceClass.class.getName());
    getPackageManager().setComponentEnabledSetting(component, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, 0);
}