我嘗試使用混入警衛與when
條件,但在編譯過程中出現了以下錯誤:呼叫混入如果變量定義
.mixin is undefined
.mixin (@color) when (isstring(@color)) {
//some code
}
.mixin(#008000);
當我刪除了when
條件它的工作原理。這裏有什麼問題?
問題是我們在一個編譯過程中定義的less文件中有變量。但是在另一個編譯過程中,這個變量沒有被定義,因爲我們需要一點動態。
所以我必須檢查變量是否定義。當我嘗試過來
$variables = [
'testColor' => '#fff111',
];
$lessc->setVariables($variables);
$cachedCompile = $lessc->cachedCompile($publicPath . $inputFile);
和
.mixin (@color:none) when (iscolor(@color)) {
color: #fff;
}
.mixin(@testColor);
一切正常。但是當我在變量數組中刪除testColor
變量時,它會崩潰,因爲它沒有被定義。
如何定義mixin並沒有什麼不對,並且您肯定不會得到該錯誤。你可以檢查lesstester.com。除此之外,對顏色使用'isstring()'意味着mixin不會輸出任何內容,因爲條件失敗。 – Harry
你也遇到錯誤'when(@color ='')'? – Manwal
是的,主要的問題是我試圖修復一個mixin guard是否檢查變量是否被定義。還有另一種方法可以減少這種情況嗎? – user3314010