Redux: لم يُشاهد الإجراء مطلقًا عند إرساله في المتجر.

تم إنشاؤها على ١٦ مايو ٢٠١٦  ·  3تعليقات  ·  مصدر: reduxjs/redux

لدي مشروع غير React بالشفرة التالية
.

_index.js_

import configureStore from 'js/store/configureStore'

/* Redux Imports */
import { createPage } from 'js/actions/page'

// Boot the App
document.addEventListener('DOMContentLoaded', function () {
  const initialState = window.__INITIAL_STATE__
  const pageId = window.__INITIAL_STATE__.page
  const store = configureStore(initialState)
  store.dispatch(createPage(pageId))
})

*actions/page.js*
function initPage (pageId) {
  return {
    type: 'CREATE_PAGE',
    page: pageId
  }
}

export function createPage (pageId) {
  return dispatch => {
    dispatch(initPage(pageId))
  }
}

_المخفّضون / page.js_

/**
 * Page Mediators get imported here
 * Page Mediators are brokers that hold page initialization.
 * The bundle includes all page mediators but they will not be activated
 * unless thre reducer calls them.
 */
import * as cart from 'js/templates/cart'

/**
 * This is a edge case, index.js boots the app and we are subscribing to 
 * a Redux @<strong i="11">@INIT</strong> action instead of adding one more layer of actions
 * which leads to unintended scenarios.
 */

const page = (state = {page: []} , action) => {

  console.log(state)
  switch (action.type) {
    case '@<strong i="12">@INIT</strong>':
      console.log('initializing page:' + state.id)
      console.log(state)
      dispatch({type: 'CREATE_PAGE',page: state.id})
      cart.init()
      return state
    case 'CREATE_PAGE':
      console.log('initializing page:' + state.id)
      cart.init()
      return state
    default:
      return state
  }
}
export default page

المشكلة لدي هي أن actions/page.js أبدا يرى CREATE_PAGE العمل. على الرغم من ذلك؟

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

غير ذات صلة ولكن

  • هذه حالة متطابقة ، يقوم index.js بتشغيل التطبيق ونحن مشتركون فيه
  • إجراء ReduxINIT بدلاً من إضافة طبقة أخرى من الإجراءات
  • مما يؤدي إلى سيناريوهات غير مقصودة.

يمكن كسر تطبيقك في أي يوم.

نقول على وجه التحديد :

  • هذه هي أنواع الإجراءات الخاصة المحفوظة بواسطة Redux.
  • لأية إجراءات غير معروفة ، يجب عليك إعادة الحالة الحالية.
  • إذا كانت الحالة الحالية غير محددة ، يجب إعادة الحالة الأولية.
  • لا تشير إلى أنواع الإجراءات هذه مباشرة في التعليمات البرمجية الخاصة بك.

ال 3 كومينتر

غير ذات صلة ولكن

  • هذه حالة متطابقة ، يقوم index.js بتشغيل التطبيق ونحن مشتركون فيه
  • إجراء ReduxINIT بدلاً من إضافة طبقة أخرى من الإجراءات
  • مما يؤدي إلى سيناريوهات غير مقصودة.

يمكن كسر تطبيقك في أي يوم.

نقول على وجه التحديد :

  • هذه هي أنواع الإجراءات الخاصة المحفوظة بواسطة Redux.
  • لأية إجراءات غير معروفة ، يجب عليك إعادة الحالة الحالية.
  • إذا كانت الحالة الحالية غير محددة ، يجب إعادة الحالة الأولية.
  • لا تشير إلى أنواع الإجراءات هذه مباشرة في التعليمات البرمجية الخاصة بك.

شكرًا gaearon - أعتزم إزالة هذا ، لقد أضفته لأن الإجراءات التي قمت بإنشائها لم يتم رؤيتها مطلقًا - ما الذي يمكن أن أفعله بشكل خاطئ؟

الرجاء استخدام StackOverflow للأسئلة. نحاول استخدام أداة تعقب المشكلات لمناقشات الأخطاء والميزات ، ولكن ليس للدعم.

بالنسبة للكود ، فإنه ينتهك قيود إعادة التشغيل من خلال تنفيذ تأثير جانبي ( cart.init() ) ومحاولة إرسال إجراء ( dispatch() ) داخل المخفض. هذا غير مسموح به ، كما هو مذكور أكثر من مرة في الوثائق. يجب أن تكون المخفضات وظائف خالصة ، لذلك يجب وضع الآثار الجانبية قبل أو بعد إرسال الإجراء.

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

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

القضايا ذات الصلة

rui-ktei picture rui-ktei  ·  3تعليقات

benoneal picture benoneal  ·  3تعليقات

vraa picture vraa  ·  3تعليقات

CellOcean picture CellOcean  ·  3تعليقات

amorphius picture amorphius  ·  3تعليقات