鉴于包含需要重用的代码的MainView.razor
,可重用的代码将移至NewComponent.razor
中。 NewComponent
需要一个参数,在下面的示例中为Route route
。该参数是通过参数规范传递的。
MainView.razor
<NewComponent route="@route" />
NewComponent.razor
被增强,以便在控制台上记录所有更改。
NewComponent.razor
@code
{
Route _route;
[Parameter]
public Route route
{
get { return _route; }
set
{
Console.WriteLine("XXXXXXXXXXXXXXXX Route = " + value.Name);
_route = value;
}
}
protected override Task OnParametersSetAsync()
{
Console.WriteLine("YYYYYYYYYYYYYYYZZ");
return base.OnParametersSetAsync();
}
}
但是,从未指定控制台输出。更新Resource.razor
Route _route;
[Parameter]
public Route route
{
get { return _route; }
set
{
Console.WriteLine("Route changing to = " + value.Name);
_route = value;
StateHasChanged();
}
}
输出路由正在更改,但从未出现NewComponent的控制台输出。为什么NewComponent不更新?
答案 0 :(得分:0)
问题在于,NewComponent最初是在/Pages
目录中编译的,然后移至项目中的/Components
目录中。将鼠标悬停在<NewComponent route="@route" />
上表明即使没有文件存储在.Pages
命名空间中。彻底的重建可以解决此问题。