تأثيرات: {
/**
* 数据查询
*
* <strong i="6">@param</strong> {any} { payload }
* <strong i="7">@param</strong> {any} { select, call, put }
*/
query: async function ({ payload }, { select, call, put }) {
await put({ type: 'show_loading' });
payload.page = payload.page || 1;
payload.limit = payload.limit || 10;
let data = await call(query, '/home/course', payload);
if (data) {
await put({
type: 'query_success',
payload: {
list: data.data,
total: data.count,
current: data.currentPage,
},
});
}
}
} ،
تأثيرات: {
/**
* 数据查询
*
* <strong i="6">@param</strong> {any} { payload }
* <strong i="7">@param</strong> {any} { select, call, put }
*/
query: function* ({ payload }, { select, call, put }) {
yield put({ type: 'show_loading' });
payload.page = payload.page || 1;
payload.limit = payload.limit || 10;
let data = yield call(query, '/home/course', payload);
if (data) {
yield put({
type: 'query_success',
payload: {
list: data.data,
total: data.count,
current: data.currentPage,
},
});
}
}
} ،
نعم ، التأثير يدعم صياغة المولد فقط. async
و await
خارج التأثير ، ثم استخدام استدعاء العائد لضبط التأثير.
أفهم والحمد لله
معذرةً ، هل ستتاح الفرصة للتأثير لدعم عدم التزامن في المستقبل؟ تضمين التغريدة
لا يوجد مولد قابل للتحكم في Async ، مثل cancel
، ولهذا السبب تختار redux-saga استخدام المولد.
أوه
sorrycc كيف يمكنني إلغاء تأثير؟
miaojiuchen ما هو المشهد لماذا إلغاء التأثير؟
sorrycc لقد واجهت هذا السيناريو:
هذا جيد في صفحة واحدة ، ولكن إذا قمت بزيارة صفحات أخرى ثم عدت إلى الصفحة السابقة ، فسيتم تكرار التأثير 2.
كيف يمكنني إلغاء التأثير ساري المفعول 1 ثم تشغيل التأثير 2؟
هل يجب علي استخدام توصيفات المسار الفرعية للاتصال بـCANCEL_EFFECTS؟
شكرا.
sorrycc نظرًا لأنك ذكرت أيضًا السيناريوهات التي تحتاج إلى استخدام إلغاء هنا ، في الواقع ، يعد عدم التزامن / انتظار كافٍ في معظم الحالات. في الاستخدام الحالي ، استخدم المولد / العائد للاتصال غير المتزامن / الانتظار. هذا مؤلم للغاية. يمكن للمؤلف التفكير في دعم كلا الوضعين في نفس الوقت والسماح للمستخدمين بالاختيار بأنفسهم ، مثل إضافة عنصر تكوين واستدعاء الوضع غير المتزامن / انتظار بعد الافتتاح ، أو الحكم التكيفي.
يمكنك تجربة redva ، يتم تمكين نفس إطار عمل
التعليق الأكثر فائدة
sorrycc نظرًا لأنك ذكرت أيضًا السيناريوهات التي تحتاج إلى استخدام إلغاء هنا ، في الواقع ، يعد عدم التزامن / انتظار كافٍ في معظم الحالات. في الاستخدام الحالي ، استخدم المولد / العائد للاتصال غير المتزامن / الانتظار. هذا مؤلم للغاية. يمكن للمؤلف التفكير في دعم كلا الوضعين في نفس الوقت والسماح للمستخدمين بالاختيار بأنفسهم ، مثل إضافة عنصر تكوين واستدعاء الوضع غير المتزامن / انتظار بعد الافتتاح ، أو الحكم التكيفي.