मेरे रेड्यूसर में मैं एक निश्चित कुंजी को लक्षित करना चाहता हूं लेकिन मुझे लगता है कि इसकी एक अनुक्रमणिका है, इसलिए मैं इसे अपने रेड्यूसर में विधियों के साथ लक्षित नहीं कर सकता। मैं नया हूँ इसलिए मदद की सराहना की जाएगी।

यहाँ मेरा कोड है।

    export const initialState = {
    sheets: {
        0: {
            newTabsState: 'details',
            name: "Sheet",
            details: {
                projectUnit: '',
                projectName: '',
                projectId: '',
                projectCompany: '',
                projectDesigner: '',
                projectClient: ''
            },
            factors: {
                memberName: '',
                memberSpecies: '',
                memberWeight: '',
                memberLength: ''
            },
            forces: {
                forcesUnit: '',
                forcesName: '',
                forcesId: '',
                forcesCompany: '',
                forcesDesigner: '',
                forcesClient: ''
            }
        }
    }
}

मैं न्यूटैबस्टेट को लक्षित करने में सक्षम होना चाहता हूं ताकि मैं इसमें एक मूल्य जोड़ सकूं लेकिन जब मैं रेड्यूसर विधि पर एक इंडेक्स जोड़ने का प्रयास करता हूं तो मेरा आईडीई मुझे एक त्रुटि देता है

नीचे दिया गया कोड काम नहीं करता... क्या आप मुझे बता सकते हैं कि क्या करना है? मैं सीखना चाहता हूं कि कैसे।

const setNewtabState = (state, payload) => {
return {
    ...state,
    sheets: {
        ...state,
        newTabsState: payload
    }
}

}

0
Lawrence Michael 31 अगस्त 2021, 21:02

2 जवाब

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

आप इस तरह newTabState तक पहुंच सकते हैं initialState.sheets[0].newTabState

मैं यह बताना चाहता हूं कि जब आप जावास्क्रिप्ट में किसी ऑब्जेक्ट का उपयोग करते हैं, तो इंडेक्स जैसी कोई चीज नहीं होती है। किसी ऑब्जेक्ट में केवल कुंजियाँ और मान होते हैं और कुंजी कोई भी मनमाना स्ट्रिंग या संख्या हो सकती है। तो हम जो एक्सेस करते हैं वह संख्या 0 द्वारा दर्शाई गई एक कुंजी है।

यदि आपको उचित अनुक्रमणिका की आवश्यकता है, तो आपको एक सरणी का उपयोग करना चाहिए (जिसमें मूल रूप से reduce विधि है)।

संदर्भ:

1
phn 31 अगस्त 2021, 19:00

यह काम करना चाहिए:

return {
   sheets: {
    0: {     
      ...state.sheets[0],
      newTabsState: payload
  }
 }
1
Simone Celli 31 अगस्त 2021, 18:25