2015-02-20 5 views
8

मैं immutable.js के लिए नया हूं और मैं बेहतर समझना चाहता हूं कि कच्चे जेएस ऑब्जेक्ट से शुरू होने वाले रिकॉर्ड का उपयोग कैसे करें।Immutable.js के साथ जावास्क्रिप्ट कच्चे ऑब्जेक्ट से रिकॉर्ड्स का मानचित्र कैसे बनाएं?

Immutable.fromJS() के साथ मैं उदाहरण के लिए एक नक्शा एक कच्चे वस्तु गुजर बना सकते हैं,:

var images = { 
    "1": { 
    id: "1", 
    urls: ["/medium/1.jpg", "/large/1.jpg"] 
    }, 
    "2": { 
    id: "2", 
    urls: ["/medium/1.jpg", "/large/1.jpg"] 
    } 
    } 

var imagesMap = Immutable.fromJS(images); 

imagesMap अब अन्य नक्शे, प्रत्येक छवि के लिए एक युक्त नक्शा दिया गया है।

var ImageRecord = Immutable.Record({ id: undefined, urls: undefined }) 

मैं कैसे imagesMapImageRecord एस के नक्शे के रूप में हो सकता है:

मैं रिकॉर्ड से युक्त एक नक्शा बनाने के लिए, एक Image रिकॉर्ड का उपयोग कर उदाहरण के लिए के रूप में परिभाषित बजाय चाहते हैं? क्या मैं fromJS पर एक रिवरवर पास कर सकता हूं, या क्या मुझे "पुराने" दृष्टिकोण के साथ जाना चाहिए?

// old approach 
var imagesMap = Immutable.Map() 
for (key in images) { 
    imagesMap.set(key, new ImageRecord(images[key])) 
} 

उत्तर

16

Immutable.fromJS एक वैकल्पिक दूसरा पैरामीटर reviver है कि आप उपयोग कर सकते हैं। आपको बस यह तय करने की आवश्यकता है कि जेएस ऑब्जेक्ट के कौन से हिस्से आप रिकॉर्ड में बदलना चाहते हैं।

var images = { 
    "1": { 
    id: "1", 
    urls: ["/medium/1.jpg", "/large/1.jpg"] 
    }, 
    "2": { 
    id: "2", 
    urls: ["/medium/1.jpg", "/large/1.jpg"] 
    } 
    }; 

var ImageRecord = Immutable.Record({ id: "0", urls: [] }) 

var imagesMap = Immutable.fromJS(images, function(key, value) { 
    // This check should be replaced by a better way to know that 
    // we really want image records 
    if(/^[0-9]+$/.test(key)) { 
    return new ImageRecord(value) 
    } 
    return value 
}); 

// Verify that it's really a record 
console.log(imagesMap.get("2").toJS()) 
console.log(imagesMap.get("2").delete("urls").toJS()) 

http://jsbin.com/ronomibano/4/edit

+2

धन्यवाद, मैं भी डॉक्स में पाया है कि फिर से जीवित करनेवाला 'key' भले ही एक मूल्य के एक रिकार्ड बन जाना चाहिए जाँच करने के लिए आसान बनाने के शीर्ष वस्तुओं के लिए एक खाली स्ट्रिंग है। – gpbl

संबंधित मुद्दे