Sass map.get() 不起作用。map-get() 确实如此。是什么赋予了?

LIC*_*HEN 10 syntax dictionary function sass sass-maps

问题: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);
}
Run Code Online (Sandbox Code Playgroud)

问题:我需要更改什么才能使map.get()语法正常工作?

rob*_*rtp 21

我遇到了与 OP 类似的问题(使用 dart-sass v1.25.0),并且仅map-get有效,map.get无效。

文档对此似乎不是很清楚,但Github 上的(Sass Module System: Draft 6)文档对此进行了更好的解释。

这似乎是无礼的话是在移动的使用@use有利于@import与本土CSS更好的兼容性,并且为了获得访问map.get你现在必须明确地导入map module使用@use关键字。

所以使用 OP 的例子,map.get应该工作:

@use "sass:map";

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

@function color($color) {
  @return map.get($colors, $color);
}
Run Code Online (Sandbox Code Playgroud)

  • 感谢这对我有用,我必须添加 `@use "sass:map";` 命令才能使其工作。我不明白为什么文档中没有明确说明这一点。 (4认同)