| 價值 | |
|---|---|
| 規則識別碼 | ASP0006 |
| 類別 | 用法 |
| 修正是破壞性或非破壞性 | 不間斷 |
原因
中 RenderTreeBuilder 方法的調用,其中包含不是常值做為參數的序號。
規則描述
Blazor的 UI 差異演算法依賴序號來判斷哪些元素已變更。 以動態方式計算序號或使用計數器可能會導致差異效能不佳。 請改用對應至原始碼行的字面序號。 例如,下列程式代碼會產生錯誤:
using Microsoft.AspNetCore.Components.Rendering;
var builder = new RenderTreeBuilder();
var seqNum = 1;
builder.OpenElement(seqNum, "div");
builder.CloseElement();
如何修正違規
若要修正此規則的違規,請確定對類別 RenderTreeBuilder 上採用序號做為參數的方法呼叫會使用固定的序號。
using Microsoft.AspNetCore.Components.Rendering;
var builder = new RenderTreeBuilder();
builder.OpenElement(0, "div");
builder.CloseElement();
隱藏警告的時機
請勿 不要 隱藏此規則的警告。 使用非字面意義的序號可能會導致效能降低。