मैं वर्तमान में प्रतिक्रिया सीखने की कोशिश कर रहा हूं और मैं राज्य के भीतर एक रिकॉर्ड को अपडेट करने के लिए सही तरीके से संघर्ष कर रहा हूं क्योंकि इसके परिवर्तनों को सहेजा गया है और एपीआई के माध्यम से वापस कर दिया गया है, अब तक मैं इसे काम पर लाने का एकमात्र तरीका वापस कर रहा हूं रिकॉर्ड की पूरी सूची और रिड्यूसर के माध्यम से राज्य को नई सूची के साथ अद्यतन करना। जो आदर्श नहीं है क्योंकि मैं एक रिकॉर्ड के परिवर्तनों के लिए एकाधिक रिकॉर्ड पुनः लोड नहीं करना चाहता हूं।

नीचे दिया गया रेड्यूसर कोड वर्तमान में मौजूदा रिकॉर्ड को बदलने के बजाय राज्य के डेटा के अंत में अद्यतन रिकॉर्ड जोड़ता है।

        case 'EDIT_AUTHOR': 
            return {
                ...state,
                authors: [...state.authors, action.payload]
            }

यह है स्टेट्स अपडेट फंक्शन

    // Edit Author
    async function editAuthor(author) {
        const config = {
            headers: {
                'Content-Type': 'application/json'
            }
        }

        try 
        {
            const res = await axios.put('api/v1/authors', author, config);

            dispatch({
                type: 'EDIT_AUTHOR',
                payload: res.data.data
            });
        } 
        catch (err) 
        {
            dispatch({
                type: 'AUTHORS_ERROR',
                payload: err.response.data.error
            });
        }
    }

किसी भी सलाह के लिए अग्रिम धन्यवाद और कृपया मुझे बताएं कि क्या आप और कोड देखना चाहते हैं, मुझे लगता है कि मैंने वह सब कुछ प्रदान किया है जिसकी आवश्यकता है।

1
Bodman 17 मार्च 2020, 17:11

1 उत्तर

सबसे बढ़िया उत्तर

जब एथर के पास एक आईडी हो तो आप उसके द्वारा उपयोगकर्ता की पहचान कर सकते हैं। चूंकि नक्शा एक नई सरणी देता है, पुरानी लेखक सूची को फैलाने की कोई आवश्यकता नहीं है।

case 'EDIT_AUTHOR': {
    const updatedAuthor = action.payload;
    const authors = state.authors.map(author => updatedAuthor.id === author.id ? updatedAuthor : author);

            return {
                ...state,
                authors,
            }
}

1
Flui 17 मार्च 2020, 14:19