मैं अपने Redux प्रोजेक्ट के लिए एक गहरी प्रतिलिपि मानचित्र विधि बनाने की कोशिश कर रहा हूं जो सरणियों के बजाय वस्तुओं के साथ काम करेगी। मैंने पढ़ा कि Redux में प्रत्येक राज्य को पिछले राज्यों में कुछ भी नहीं बदलना चाहिए।
export const mapCopy = (object, callback) => {
return Object.keys(object).reduce(function (output, key) {
output[key] = callback.call(this, {...object[key]});
return output;
}, {});
}
यह काम करता हैं:
return mapCopy(state, e => {
if (e.id === action.id) {
e.title = 'new item';
}
return e;
})
हालाँकि यह आंतरिक वस्तुओं की गहरी नकल नहीं करता है इसलिए मुझे इसे करने की आवश्यकता है:
export const mapCopy = (object, callback) => {
return Object.keys(object).reduce(function (output, key) {
let newObject = {...object[key]};
newObject.style = {...newObject.style};
newObject.data = {...newObject.data};
output[key] = callback.call(this, newObject);
return output;
}, {});
}
यह कम सुरुचिपूर्ण है क्योंकि यह जानना आवश्यक है कि कौन सी वस्तुएं पारित की गई हैं। क्या ऑब्जेक्ट को गहरी कॉपी करने के लिए फैल सिंटैक्स का उपयोग करने के लिए ईएस 6 में एक तरीका है?