Dva: تحذير مزعج: تحذير: الإرسال: ns / ACTION_TYPE يجب ألا تكون مسبوقة بمساحة الاسم ns

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

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

احتفظ بمنشئي الإجراءات وأنواع الإجراءات في ملفات مخصصة ، والتي أعتقد أنها أفضل ممارسة عامة للإعادة (انظر على سبيل المثال هنا )

هذا يعني أنني أستخدم دائمًا منشئي الإجراءات في تأثيرات dva والتسجيلات والمكونات.

مثال:
actionTypes.js:

export const TOKEN_RESTORED = 'auth/TOKEN_RESTORED';

Actions.js:

export default {
    tokenRestored: payload => ({type: TOKEN_RESTORED, payload: payload.token})
};

model.js:

app.model({
    namespace: ...,
    state: { ... },
    effects: { ... },

    subscriptions: {
        setup({dispatch}) {
            let token = localStorage.token;
            if (token) {
                dispatch(actions.tokenRestored({token}));
            }
        }
    }
});

أعتقد أنه يجب أن يكون المستخدمون قادرين على كتابة رمز مثل هذا ، دون تلقي عشرات التحذيرات من النوع:

Warning: dispatch: auth/tokenRestored should not be prefixed with namespace auth

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

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

لقد تأخرت قليلاً على الحفلة هنا ، لكن هذا اختراق اعتدت عليه للتغلب على الخطأ. بالتأكيد ليس حلاً جيدًا ولكنه على الأقل يخنق ناتج الخطأ.

"// my-model.js
console.error = message => {
إذا (message.indexOf ("prefixNamespace") === -1) {
console.log (رسالة) ؛
}
} ؛

ال 11 كومينتر

لقد واجهت للتو نفس المشكلة.
تعد إدارة الإجراءات من خلال إجراءات الإعادة أمرًا مناسبًا.
ومع ذلك ، لا يمكن استخدام هذا في النماذج بسبب التحذير.

لقد قمت بإنشاء طلب سحب في حال كان ذلك يساعد في جذب الانتباه لهذه المشكلة.

1013

نوصي باستخدام https://www.npmjs.com/package/babel-plugin-dev-expression لإزالة الثوابت والتحذير للإنتاج.

ماذا عن بيئة التطوير؟
ماذا لو لم أستطع استخدام مكونات Babel الإضافية لأنني أستخدم إنشاء تطبيق رد فعل؟

لماذا يجب أن أتلقى تحذيرات لاستخدام تقنية شائعة؟

في 19 يوليو 2017 06:25 ، كتب "chencheng (云 谦)" [email protected] :

نوصي باستخدام https://www.npmjs.com/package/babel-plugin-dev-expression
لتجريد الثابت والتحذير من أجل الإنتاج.

-
أنت تتلقى هذا لأنك قمت بتأليف الموضوع.
قم بالرد على هذا البريد الإلكتروني مباشرة ، وقم بعرضه على GitHub
https://github.com/dvajs/dva/issues/988#issuecomment-316261873 ، أو كتم الصوت
الخيط
https://github.com/notifications/unsubscribe-auth/ABJVKPRJMf0P0qVcTgOm-UH4q9RCNpg4ks5sPXcTgaJpZM4N9hlv
.

orzarchi أعتقد أن sorrycc مشغول للغاية ويركز على المشكلات المفتوحة فقط حتى يتمكن من الحفاظ على هذا المشروع. لذلك عليك إنشاء عدد جديد للفت انتباهه.

راجع للشغل ، هل تمكنت من حل هذه التحذيرات؟

لدي مشكلة مختلفة. يضع نموذجي إجراءً لا تستخدمه إلا النماذج الأخرى:

// realtime.js
yield put({ type: 'message', payload: { message } });

والنماذج الأخرى تستمع إلى الرسائل من الوقت الفعلي:

// someModel.js
const message = yield take('realtime/message');

نظرًا لأن نموذج realtime لا يفعل شيئًا مع message نفسه ، فلا يوجد تأثير محدد لـ message . بسبب أن yield put({ type: 'message', payload: { message } }) لم يكن مسبوقًا بخوارزميات dvajs الداخلية ولم يتم إطلاق realtime/message .
وإذا قمت بالبادئة يدويًا:

// realtime.js
yield put({ type: 'realtime/message', payload: { message } });

يطرح تحذيرات حول مساحة الاسم ("... لا ينبغي أن تكون مسبوقة بمساحة الاسم ...")

لحل المشكلة ، أضفت تأثيرًا وهميًا إلى النموذج:

// realtime.js
'effects': {
  // dvajs requires effect to be defined to auto-prefix it with namespace
  // if add prefix manually then dvajs throws annoying warnings
  // https://github.com/dvajs/dva/issues/988
  message: () => { },
}

الآن ليس لدي أي تحذيرات والنماذج الأخرى تتلقى realtime/message عمل.

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

لقد تأخرت قليلاً على الحفلة هنا ، لكن هذا اختراق اعتدت عليه للتغلب على الخطأ. بالتأكيد ليس حلاً جيدًا ولكنه على الأقل يخنق ناتج الخطأ.

"// my-model.js
console.error = message => {
إذا (message.indexOf ("prefixNamespace") === -1) {
console.log (رسالة) ؛
}
} ؛

لقد تأخرت قليلاً على الحفلة هنا ، لكن هذا اختراق اعتدت عليه للتغلب على الخطأ. بالتأكيد ليس حلاً جيدًا ولكنه على الأقل يخنق ناتج الخطأ.

console.error = message => {
  if (message.indexOf("prefixNamespace") === -1) {
    console.log(message);
  }
};

هل يمكنك توضيح الكود الخاص بك؟ اين وضعت الكود؟

يمكنك وضعه في src / app.tsx. وإذا كنت تريد الاحتفاظ بـ console.error بدلاً من تحويل جميع console.error إلى console.log ، فيمكنك تجربة هذا الرمز

const errorLog = console.error;
  console.error = (...rest) => {
    if (rest[0] && rest[0].indexOf('[sagaEffects.put]') === -1) {
      errorLog.call(console, ...rest);
    }
  };

يمكنك وضعه في src / app.tsx. وإذا كنت تريد الاحتفاظ بـ console.error بدلاً من تحويل جميع console.error إلى console.log ، فيمكنك تجربة هذا الرمز

const errorLog = console.error;
  console.error = (...rest) => {
    if (rest[0] && rest[0].indexOf('[sagaEffects.put]') === -1) {
      errorLog.call(console, ...rest);
    }
  };

شكرًا لك ، ووجدت أنه يمكنني وضعه في أي مكان في التطبيق ، :))

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