17

问题:map.get()不起作用。map-get()确实有效。

我设置了一个颜色值图并创建了一个简单的函数来检索它们。

在进行检索时,我遵循了Sass 文档,该文档指出您可以使用该map.get()函数检索地图值。使用这个或任何其他map.function结果在Error: There is no module with the namespace "map"..

查看 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()语法正常工作?

4

1 回答 1

34

我遇到了与 OP 类似的问题(使用 dart-sass v1.25.0),并且只能map-get工作,map.get不能。

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

看起来Sass 正在继续使用@use,以支持@import与原生 CSS 更好的兼容性,并且为了访问map.get您现在必须显式导入map moduleusing@use关键字。

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

@use "sass:map";

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

@function color($color) {
  @return map.get($colors, $color);
}
于 2020-10-16T17:02:22.137 回答