समस्या: map.get() काम नहीं करता। map-get() काम करता है।

मैंने रंग मूल्यों का एक नक्शा स्थापित किया और उन्हें पुनः प्राप्त करने के लिए एक सरल कार्य बनाया।

पुनर्प्राप्ति करते समय, मैंने Sass दस्तावेज़ीकरण का पालन किया जिसमें कहा गया है कि आप मानचित्र मान प्राप्त कर सकते हैं map.get() फ़ंक्शन का उपयोग करना। इसका या किसी अन्य map.function का उपयोग करने से एक Error: There is no module with the namespace "map". परिणाम प्राप्त होता है।

मैप मॉड्यूल की जाँच करते हुए, मैंने एक वैकल्पिक सिंटैक्स, map-get() देखा, जो काम करता है।

क्या देता है? क्या मुझे कुछ याद आ रहा है, जैसे नक्शा मॉड्यूल आयात करना, ताकि मैं इसे उस रूप में उपयोग कर सकूं?

नीचे मेरा कोड देखें:

// Using npm dart `sass 1.26.11`.

$colors: ('primary': black, 'secondary': white);

// Doesn't work    
@function color($color) {
  @return map.get($colors, $color);
}

// Does work
@function color($color) {
  @return map-get($colors, $color);
}

प्रश्न: map.get() सिंटैक्स को काम करने के लिए मुझे क्या बदलने की आवश्यकता है?

5
LICHEN 5 अक्टूबर 2020, 17:13

1 उत्तर

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

मेरे पास ओपी (डार्ट-एसएएस v1.25.0 का उपयोग करके) के समान समस्या है, और केवल map-get काम करता है, map.get नहीं करता है।

इस पर दस्तावेज़ीकरण बहुत स्पष्ट नहीं लगता है, लेकिन (सैस मॉड्यूल सिस्टम: ड्राफ्ट 6) जीथब पर दस्तावेज़ इसे बेहतर तरीके से समझाता है।

ऐसा लगता है कि Sass आगे बढ़ रहा है @use के पक्ष में @use का उपयोग करने के लिए @import देशी सीएसएस के साथ बेहतर संगतता के लिए, और map.get तक पहुंच प्राप्त करने के लिए अब आपको @use कीवर्ड का उपयोग करके map module को स्पष्ट रूप से आयात करना होगा।

तो ओपी के उदाहरण का उपयोग करते हुए, map.get को काम करना चाहिए:

@use "sass:map";

$colors: ('primary': black, 'secondary': white);

@function color($color) {
  @return map.get($colors, $color);
}
9
robertp 16 अक्टूबर 2020, 17:02