में किसी कार्रवाई को रद्द/अनदेखा कैसे करें कोई कार्रवाई रद्द करने या इसे अनदेखा करने का कोई तरीका है?Redux
या इसके बजाय किसी कार्रवाई को अनदेखा करने का सबसे अच्छा/अनुशंसित तरीका क्या है?
मैं निम्नलिखित कार्रवाई निर्माता है और जब मैं इनपुट गलत आकार (माना 'some_string'
) कार्रवाई निर्माता में, मेरे अपने चेतावनी संदेश प्राप्त करने के अतिरिक्त मैं भी मिलता है: Uncaught Error: Actions must be plain objects. Use custom middleware for async actions.
import { SET_SELECTED_PHOTOS_SIZE } from './_reducers';
export default (size=0) => {
if (!isNaN(parseFloat(size))) {
return {
type: SET_SELECTED_PHOTOS_SIZE,
size: size,
};
} else {
app.warn('Size is not defined or not a number');
}
};
मैंने कलह (reactiflux) में redux
चैनल में इस पर चर्चा की जहां एक सुझाव इस तरह redux-thunk उपयोग करने के लिए किया गया था:
export default size => dispatch => {
if (!isNaN(parseFloat(size))) {
dispatch({
type: SET_SELECTED_PHOTOS_SIZE,
size: size,
});
} else {
app.warn('Size is not defined or not a number');
}
}
अन्य विकल्प कम करने के अंदर कार्रवाई की अनदेखी करने के लिए था । यह reducer "fatter" बनाता है क्योंकि उसके बाद और ज़िम्मेदारियां होती हैं, लेकिन यह कम थंक-एक्शन का उपयोग करती है जो डीबग करना आसान बनाता है। मैं हाथ से बाहर निकलने वाले थंक-पैटर्न को देख सकता था क्योंकि मुझे इसे लगभग हर क्रिया के लिए उपयोग करने के लिए मजबूर किया जाएगा, यदि आपके पास बहुत सारे हैं तो बैच किए गए कार्यों को बनाए रखने के लिए थोड़ा दर्द होता है।
हॉट रीलोडिंग पहलू के संबंध में, यदि आप रेड्यूसर द्वारा प्राप्त किए गए कार्यों को फिर से चलाते हैं तो आपको उसी स्थिति के साथ किसी भी तरह से समाप्त होना चाहिए, और यदि अन्य क्रियाएं निर्माता में ट्रिगर हो जाती हैं तो फिर भी उन्हें फिर से चलाने के परिणामस्वरूप एक ही राज्य, मानते हैं कि reducer शुद्ध है – Moshe
यह सच है, लेकिन जैसा कि मैंने ऊपर दिए गए उदाहरण में बताया है। पहले दृष्टिकोण (थंक-मिडलवेयर का उपयोग करके) कार्रवाई को भी प्रेषित नहीं किया जाता है और इसलिए जानकारी खो जाती है और जानकारी यह है कि उपयोगकर्ता ने बटन पर क्लिक किया। यह एक छोटा सा उदाहरण है, लेकिन असली दुनिया में आप वास्तव में एक्शन क्रिएटर में भारी तर्क के साथ समाप्त हो सकते हैं जिसके परिणामस्वरूप कई क्रियाएं (घटनाएं) होती हैं लेकिन कार्यों को उत्पन्न करने के लिए तर्क वैसे भी पुनः चलाने योग्य नहीं होता है। हालांकि, तथ्य यह है कि कुछ यूआई इंटरैक्शन किए जाने से इनकार नहीं किया जा सकता है (बटन पर क्लिक करके)। –
रेडक्स में कार्रवाइयों को अनदेखा करने के लिए, आपको [redux-ignore] (https://github.com/omnidan/redux-ignore) पर एक नज़र डालना चाहिए। बांध अब्रामोव ने खुद की सिफारिश की थी। – umphy