Dva: كيف يتم تحديث الحالة بعد تنفيذ التأثيرات بشكل غير متزامن؟

تم إنشاؤها على ١٠ أبريل ٢٠١٨  ·  5تعليقات  ·  مصدر: dvajs/dva

الوظيفة المتوقعة هي أنه بعد حصول التأثيرات على البيانات بشكل غير متزامن ، تعرض النافذة المنبثقة البيانات التي تم الحصول عليها. قم بتعيين خاصية علامة حالة المكون لمعرفة ما إذا كان سيتم عرض المكون أم لا. إذا تم وضع سمة بت العلم في حالة النموذج عندما تقفز الصفحة ، فستظل بت العلم في الحالة وستظهر النافذة المنبثقة مرة أخرى عند العودة إلى الصفحة ، وهو ما لا أريده.

question

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

لا تستخدم عمليات الاسترجاعات ، فكل تأثير سيعيد الوعد بعد الإرسال ، فقط تعامل مع النافذة المنبثقة في الوعد

ال 5 كومينتر

أنا شخصياً أعتقد أنه من الأنسب وضع الحالة المنبثقة في حالة مكون التفاعل.

إذا تمت إضافته إلى حالة مكون التفاعل ، فكيف يتم تشغيل تحديث الحالة بعد رد نداء التأثيرات؟ سؤالي هو هذا. هل قمت بتغيير دورة حياة componentWillReceiveProps؟ أم أنها طريقة أخرى؟

فكرت في حل ، ولا أعرف ما إذا كان هذا مناسبًا.
في إجراء تأثيرات dipatch ، بالإضافة إلى الحمولة العادية ، قمت أيضًا بتمرير طريقة تحديث الحالة كمعامل لتأثير النموذج ، وسميته لاحقًا. تظهر الكود على النحو التالي:

//  route components.js
showDetail = (record) => {
    const { dispatch } = this.props;
    dispatch({
      type: effects.getDetail,
      payload: { id: record.id },
      callback: () => {
        this.setState({
          detailVisible: true,
        });
      },
    });
  };
// models
effects: {
*getDetail({ payload, callback }, { call, put }) {
      const response = yield call(getDetail, payload);
      if (response.success) {
        if (callback && typeof callback === 'function') {
          callback();
        }
        yield put({
          type: 'getDetailSuccess',
          payload: response,
        });
      }
    },
}

لا تستخدم عمليات الاسترجاعات ، فكل تأثير سيعيد الوعد بعد الإرسال ، فقط تعامل مع النافذة المنبثقة في الوعد

لا تستخدم عمليات الاسترجاعات ، فكل تأثير سيعيد الوعد بعد الإرسال ، فقط تعامل مع النافذة المنبثقة في الوعد

كيفية تحقيق ذلك

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