gpt4 book ai didi

blazor - 在循环中正确使用序列参数

转载 作者:行者123 更新时间:2023-12-04 08:46:26 24 4
gpt4 key购买 nike

post表示我应该使用硬编码值。然而,它没有说明如何处理循环。什么是正确的方法?是否使用 builder.SetKey(model);绕过问题?代码工作正常。我只想在为此公开 repo 之前澄清这一点 NuGet package

        protected override void BuildRenderTree(RenderTreeBuilder builder)
{

...

int i = 3;
foreach (object model in models)
{
(Type componentType, string propertyName) viewComponentInfo = GetModelViewComponentInfo(model);

Type componentType = viewComponentInfo.componentType;
if (componentType is not null)
{
string propertyName = string.IsNullOrWhiteSpace(viewComponentInfo.propertyName) ? "Model" : viewComponentInfo.propertyName;
builder.OpenComponent(i++, componentType);
builder.AddAttribute(i++, propertyName, model);
builder.SetKey(model);
builder.CloseComponent();
}
}
...
}

最佳答案

你所做的正是那个帖子所说的你不应该做的。
引用您链接到的页面:

Q: Despite this, I still want to generate the sequence numbers dynamically. Can I?
A: You can, but it will make your app performance worse.


该建议告诉您使用:
// int i = 3;

foreach(...)
{
...
builder.OpenComponent(3, componentType);
builder.AddAttribute(4, propertyName, model);
builder.SetKey(model);
}
有点反直觉,但编号是为了维护有关循环和 if/else 分支的信息。 SetKey() 有助于识别 foreach 循环的迭代。
据我所知,仅当您的模型集合在运行时发生更改时才重要,我不确定您的包是否是这种情况。
但是为了安全起见,我会犯错并手动为这些行编号。

关于blazor - 在循环中正确使用序列参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64290642/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com