如何使用子字符串方法在Blazor的父子关系?



我是Blazor初学者,并在Blazor WASM中创建了一个简单的应用程序。这是一种亲子关系。我实际上想要的是父组件应该传递已经切片的FirstName,子组件应该得到切片的FirstName作为参数,它应该显示在页面上。

我的父组件

@using BlSls.Client.Shared
<Child FirstName="@FirstName" />
@code{

private string FirstName ="Royster" ;
protected override async Task OnInitializedAsync()
{
FirstName=FirstName.SubString(0,FirstName.Length-4);
}

}

我的子组件

<span >Welcome,@FirstName</span>
@code {
[Parameter] public string FirstName { get; set; }
}

我需要显示名为"Royster"作为"Roy"在纸上。但我没法把切好的绳子给孩子。相反,我得到了完整的字符串。我错在哪里?有人能帮帮我吗?

这是因为您将子字符串代码放在OnInitializedAsync()中,请保持在OnInitialized()

同样,你的代码可以被改进:

ParentComponent:

@using BlSls.Client.Shared
<Child SlicedName="@SlicedName" />
@code{
private string FirstName ="Royster" ;
private string SlicedName;
protected override void OnInitialized()
{
SlicedName=FirstName.SubString(0,FirstName.Length-3);
}
}

由于substring不是一个特别昂贵的操作,您可以直接在形参赋值中使用它:

@using BlSls.Client.Shared
<Child SlicedName="@FirstName.SubString(0,FirstName.Length-3)" />
@code{
private string FirstName ="Royster" ;
}

这是你的代码的工作版本。

  1. 组件相同
  2. 我已经拆分了firstName。
  3. SubString实际上是Substring,并且不工作是你编码的方式。
  4. OnInitializedAsync失去async,因为没有异步行为。
  5. 我已经把你的方法放在按钮上点击。
@page "/Hello"
<Child FirstName="@shortFirstName" />
<div class="m-3">
<button class="btn btn-dark" @onclick="Calc">Your Calculation</button>
</div>
@code{
private string FirstName = "Royster";
private string shortFirstName = "Royster";
protected override Task OnInitializedAsync()
{
shortFirstName = FirstName.Substring(0, 3);
return Task.CompletedTask;
}
protected void Calc()
=> shortFirstName = FirstName.Substring(0, FirstName.Length - 3);
}

您使用的是什么开发环境?为什么没有编译错误?