2015-12-23 8 views
6

मैं setInt के उपयोग() देखा और सेट() कुछ प्रतिक्रिया-redux कोड में किया है:प्रतिक्रिया-रेडक्स: state.setIn() और state.set() के बीच क्या अंतर है?

state.setIn(...); 
state.set(...); 

मैं कुछ दस्तावेज़ यहां https://facebook.github.io/immutable-js/ पाया है लेकिन दुर्भाग्य से विधि विस्तार से दर्ज नहीं किया गया है।

मुझे कुछ अन्य प्रश्न भी मिले: Using React's immutable helper with Immutable.js लेकिन ये मेरे प्रश्न का उत्तर नहीं देते हैं।

मैं समझता हूं कि यह कुछ अपरिवर्तनीय सामान करना चाहिए? लेकिन यहां अपरिवर्तनीय चीज़ क्या है? और सेट() और setIn() के बीच क्या अंतर है? हमें अपरिवर्तनीय क्यों चाहिए?

+0

दोनों [सेट] (https://facebook.github.io/ पढ़ सकते है अपरिवर्तनीय-जेएस/डॉक्स/#/सूची/सेट) और [सेटइन] (https://facebook.github.io/immutable-js/docs/#/List/setIn) दस्तावेज –

उत्तर

15

अपरिवर्तनीय set विधि केवल तत्काल गुण सेट करता है, आईई। वस्तु के प्रत्यक्ष बच्चे। एक setIn चलिए आप डेटा के नीचे किसी गहरे नोड का मान सेट करते हैं। set केवल संपत्ति का नाम लेता है। setIn गहरा घोंसला तत्व तक पहुंचने के लिए कुंजी/अनुक्रमणिका का एक सरणी लेता है। जब दुकानों में राज्यों को अद्यतन करने के रूप में आप सामान्य कार्यों का उपयोग करें और बच्चे घटकों की कुंजी रास्तों की आपूर्ति कर सकते

var basket = Immutable.Map({"milk":"yes", "flour":"no"}); 

basket = basket.set("flour", "yes"); 

basket = Immutable.Map({"fruits":{"oranges":"no"}, "flour":"no"}); 

basket = basket.setIn(["fruits", "oranges"], "yes"); 

getIn/setIn तरीकों अत्यंत उपयोगी होते हैं। वे पैरामीटर के रूप में पथ पारित करने वाले कार्यों का आह्वान कर सकते हैं।

+0

दस्तावेज को बदलने के लिए सेटिंग्स का उपयोग करना संभव है फलों के बजाय पूरे फलों का ऑब्जेक्ट ऑरेंज? – BigDong

+1

हां। 'टोकरी = basket.setIn ([" फल "], Immutable.fromJS ({" संतरे ":" हाँ "});' ' – hazardous

0

set और setInimmutablejs विधि में से एक है जिसका उपयोग आप किसी सूची या मानचित्र ऑब्जेक्ट में डेटा सेट करने के लिए करते हैं। यह वह जगह है समझने के लिए सरल उदाहरण मान लीजिए कि आप देता है एक इस

// ध्यान दें fromJS एक और तरीका जो इस मामले में immutablejs पुस्तकालय

const iniState = fromJS({ 
    name:null, 
    friends:fromJS({ 
     name:null 
    }), 
}) 

से आता है कि आप फिर नवीनतम के साथ प्रारंभिक अवस्था अद्यतन करने की आवश्यकता यही वह जगह है जहां आप सेट और सेट इन विधियों का उपयोग कर सकते हैं।

iniState.set('name',"sibusiso Massango").setIn(['friends','name'],"Zweli Mathebula");

इस

कैसे आप set और setIn विधि का उपयोग कर सकते हैं, इस बारे में अधिक जानकारी प्राप्त करने के लिए आप इस डॉक्स https://facebook.github.io/immutable-js/docs/

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