Dva: بعد تسجيل خروج النظام ، كيف يمكن لبيان واحد مسح جميع البيانات الموجودة في المخزن ، ويتم الإبلاغ عن خطأ عندما يقوم المسار المتداخل بتحديث الصفحة.

تم إنشاؤها على ٩ فبراير ٢٠١٧  ·  3تعليقات  ·  مصدر: dvajs/dva

أثناء تشغيل المستخدم ، يحتفظ النظام ببيانات التشغيل الأخيرة للوظيفة ، ولكن بعد تسجيل الخروج ، يقوم مستخدم آخر بتسجيل الدخول ليجد أن بيانات المستخدم السابق لا تزال موجودة. كيف يمكن لبيان واحد مسح البيانات في المخزن بأكمله ؟

توجد مشكلة أخرى. يستخدم توجيه النظام الخاص بي التداخل. قم بزيارة: http: // localhost : 8000 / main / repos. في هذا الوقت ، عندما يتم تحديث f5 ، تكون الصفحة بأكملها فارغة. وحدة التحكم: خطأ Syntax غير معلوم: رمز مميز غير متوقع <، فهرس .js: 1 ، ثم لا يمكنني رؤية الكود المصدري على وحدة التحكم ...

question

التعليق الأكثر فائدة

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');

ال 3 كومينتر

كيف يمكن لبيان واحد مسح البيانات في المخزن بأكمله؟

اعتراض العمل مع 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. الخطأ هو أن قيمة المتجر لا يمكن قراءتها.المنجم هو تحميل النموذج بشكل غير متزامن ، ويبدو أنه من المستحيل التغيير إلى متزامن

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات