是否有必要重新分配从URL路由参数分配的Blazor类属性



当我第一次开始学习Blazor时,我遵循的教程会将URL参数分配的页面的类属性重新分配给新的类属性,如下所示:

//URL = "/pagename/{parameter1}/{parameter2}"
[Parameter]
public string parameter1 { get; set; }
public string Parameter1 { get; set; }
[Parameter]
public string parameter2 { get; set; }
public string Parameter2 { get; set; }
protected override void OnInitialized()
{
Parameter1 = parameter1;
Parameter2 = parameter2;
}

为什么我不首先将URL参数分配给我想要使用的页面属性?这样我就避免了额外的代码和处理。

//URL = "/pagename/{Parameter1}/{Parameter2}"
[Parameter]
public string Parameter1 { get; set; }
[Parameter]
public string Parameter2 { get; set; }

为什么我想用第一种方式而不是第二种方式?如果是,那是什么?

*根据评论中的建议进行编辑以确保准确性和清晰度。

为什么我不直接将URL参数分配给我想要使用的属性,以避免像这样的额外代码和处理?

//URL = "/pagename/{Parameter1}/{Parameter2}"
[Parameter]
string Parameter1 { get; set; }
[Parameter]
string Parameter2 { get; set; }

这正是它一直以来的样子。还要注意,路由模板中的参数名称可以以小写字母开头(最好(。

注意:参数属性应该是公共的。

这实际上取决于您对参数所做的操作。

在Blazor中要遵循的一般规则是";组件不应该覆盖它们自己的传入参数值属性"-Steve Sanderson对此问题的评论

Blazor在内部跟踪参数状态,如果您的组件直接修改参数的值CCD_;Blazor";没有看到这种变化。

包含Parameter1ChangedEventCallback来更新父组件甚至还不够好,因为在更改参数值和更新内部状态之间还有一段时间。这可能会导致组件渲染出现问题。

因此,如果您的组件要更新参数,则应始终首先将其复制到本地字段/属性,更新本地字段并调用原始Parameter1ChangedEventCallback。这将允许更新任何状态。

在URL参数的情况下,您不太可能更新它们,但在某些情况下,你可能会觉得这是个好主意——这可能就是为什么你的教程使用本地副本的策略。

相关内容

  • 没有找到相关文章

最新更新