मैं अपने रिएक्ट एप्लिकेशन में Redux का उपयोग कर रहा हूं। हालांकि आइटम हमेशा index द्वारा संग्रहीत किए जाते हैं, जैसे =>

store

मैं उन्हें ids द्वारा स्टोर करना चाहता हूं, जैसे 0 के बजाय पहले आइटम का इंडेक्स 41 होना चाहिए। मैं वह कैसे कर सकता हूं?

Reducer.js

export function ratedPosts(state=[], action) {
    enableES5()
    return (
        produce(state, draft => {
            const rate = action.Rate
            switch (action.type) {
                case RATE_POST:
                    draft.unshift({postId: action.postId, rate: rate})
                    break
                case RATE_POST_UPDATE:
                    draft.map(post => post.postId === action.postId).rate = rate
                    break
                default:
                    return draft
            }
        })
    )
}
1
altF4 19 अक्टूबर 2020, 14:35

1 उत्तर

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

आप इसे सरणियों के साथ नहीं कर सकते हैं, लेकिन आप इसे वस्तुओं के साथ कर सकते हैं। मैं यह भी देखता हूं कि आप नई पोस्ट जोड़ने के लिए Array.unshift का उपयोग कर रहे हैं, ध्यान रखें कि सरणियाँ वस्तुओं के अनुक्रम की गारंटी नहीं देती हैं, भले ही यह ज्यादातर समय काम करती हो।

आपको सरणी के बजाय ऑब्जेक्ट्स का उपयोग करने के लिए अपनी डेटा संरचना को परिवर्तित करने की आवश्यकता होगी, लेकिन गेटटर फ़ंक्शन में आप एक सरणी में कनवर्ट कर सकते हैं ताकि इसे फ्रंटएंड में अधिक आसानी से उपयोग किया जा सके।

आप [ ] का उपयोग करके प्रोग्रामिक रूप से एक ऑब्जेक्ट आईडी सेट कर सकते हैं

let myObject = {}
const idOne = 'abc'
const idTwo = 'def'

draft[idOne] = "Hello"  // draft.abc === "Hello"
draft[idTwo] = "World"  // draft.def === "World"

draft === {
  abc: "Hello",
  def: "World"
}
1
Murilo Schünke 19 अक्टूबर 2020, 14:48