أثناء تشغيل المستخدم ، يحتفظ النظام ببيانات التشغيل الأخيرة للوظيفة ، ولكن بعد تسجيل الخروج ، يقوم مستخدم آخر بتسجيل الدخول ليجد أن بيانات المستخدم السابق لا تزال موجودة. كيف يمكن لبيان واحد مسح البيانات في المخزن بأكمله ؟
توجد مشكلة أخرى. يستخدم توجيه النظام الخاص بي التداخل. قم بزيارة: http: // localhost : 8000 / main / repos. في هذا الوقت ، عندما يتم تحديث f5 ، تكون الصفحة بأكملها فارغة. وحدة التحكم: خطأ Syntax غير معلوم: رمز مميز غير متوقع <، فهرس .js: 1 ، ثم لا يمكنني رؤية الكود المصدري على وحدة التحكم ...
كيف يمكن لبيان واحد مسح البيانات في المخزن بأكمله؟
اعتراض العمل مع onReducer
ثم لا يمكنني رؤية الكود المصدري على وحدة التحكم ...
index.js
إلى /index.js
bjwulin حل هذه المشكلة للتو. وفقًا لما قالهsorrycc كثيرًا ، استخدم onReducer. ما أفهمه هو أن onReducer يمكن أن يعترض العمل العالمي والحالة ، ويعيد الحالة الجديدة. في مثالنا ، إذا كان الإجراء هو تسجيل الخروج ، فسيتم إرجاع الحالة الأصلية. إذا لم يكن الإجراء هو الخروج ، فسيتم إرجاع الحالة المستلمة.
السؤال الآن هو كيفية الحصول على الحالة الأولية. بالطبع ، يمكننا كتابة الحالة الأصلية مباشرة في index.js. ومع ذلك ، مع تغييرات الأعمال ، إذا كنت ترغب في تعديل عدة حالات ، يجب عليك القدوم إلى index.js لتغيير الحالة الأولية المقابلة أيضًا ، وهو أمر مزعج للغاية. لذلك من الأنسب الاستيراد مباشرة من النماذج.
تظهر الكود على النحو التالي:
const models=[];
models.push(require('./models/exhibit'));
models.push(require('./models/user'));
const initialState={};
models.forEach((m)=>initialState[m.namespace]=m.state);
const undo = r => (state, action) => {
const newState = r(state, action);
if (action.type == 'user/logoutOnlyStatus') {
return {
routing: newState.routing,
...initialState
}
}
else {
return newState
}
};
const app=dva({
onError(e){
console.log(e)
},
onReducer: undo
});
app.model(require('./models/exhibit'));
app.model(require('./models/user'));
app.router(require('./router'));
app.start('#root');
zhangdistephen أحصل على خطأ عند استخدام onReducer. الخطأ هو أن قيمة المتجر لا يمكن قراءتها.المنجم هو تحميل النموذج بشكل غير متزامن ، ويبدو أنه من المستحيل التغيير إلى متزامن
التعليق الأكثر فائدة
bjwulin حل هذه المشكلة للتو. وفقًا لما قالهsorrycc كثيرًا ، استخدم onReducer. ما أفهمه هو أن onReducer يمكن أن يعترض العمل العالمي والحالة ، ويعيد الحالة الجديدة. في مثالنا ، إذا كان الإجراء هو تسجيل الخروج ، فسيتم إرجاع الحالة الأصلية. إذا لم يكن الإجراء هو الخروج ، فسيتم إرجاع الحالة المستلمة.
السؤال الآن هو كيفية الحصول على الحالة الأولية. بالطبع ، يمكننا كتابة الحالة الأصلية مباشرة في index.js. ومع ذلك ، مع تغييرات الأعمال ، إذا كنت ترغب في تعديل عدة حالات ، يجب عليك القدوم إلى index.js لتغيير الحالة الأولية المقابلة أيضًا ، وهو أمر مزعج للغاية. لذلك من الأنسب الاستيراد مباشرة من النماذج.
تظهر الكود على النحو التالي: