[英]StateHasChanged not updating component
我有两个组件,一个用于列出所有学生,另一个显示所选学生的详细信息。
以下是两者的父组件:
<p> Id of student @id </p>
<Students onStudentSelected="@getStudentId"> </Students>
<Student StudentId="@id"> </Student>
@code {
private int id;
private void getStudentId (int e) {
id = e;
stateHasChanged();
}
}
现在事情是这样的, <Students> </Students>
组件可以正常工作,即我可以看到学生列表,当单击一个时,学生的 id 被分配给id
并显示在<p></p>
标签。
但是<Student> </Student>
组件并不令人耳目一新。 如果我手动给 Student 组件一个 id,那么我可以看到 Student 的详细信息。
所以,出于某种原因stateHasChanged();
在这里没有效果。
如果你想看看这两个组件长什么样子,很简单:
学生
@foreach(var std in StudentsJSON) {
<p @onclick="() => selectStudent(std.id)"> @std.name </p>
}
@code {
[Parameter]
public EventCallback<int> onStudentSelected { get; set; }
async Task selectStudent(int e){
await onStudentSelected.InvokeAsync(e)
// StateHasChanged(); tried here doesn't work
}
}
学生
@using Newtonsoft.Json
@using System.Net.Http.Headers
@if(JsonResponseContent == null) {
<p> No student found </p>
}else{
@foreach(var st in JsonResponseContent) {
<p> @st.age / @st.name / @st.subject </p>
}
}
@code {
[Parameter] public int id { get; set; }
Student JsonResponseContent;
protected override async Task OnInitializedAsync(){
using (HttpClient client = new HttpClient())
{
...
JsonResponseContent = JsonConvert.DeserializeObject<Student>(ResponseContent);
}
}
}
我不知道为什么刷新不起作用。
在OnParametersSetAsync()
方法中的Student
组件调用 api
protected override async Task OnParametersSetAsync(){
using (HttpClient client = new HttpClient())
{
...
JsonResponseContent = JsonConvert.DeserializeObject<Student(ResponseContent);
}
}
}
OnInitializedAsync
在组件生命周期中仅调用一次,而OnParametersSetAsync
每次参数值更改时(在您的示例id
中)。 更多信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.