У меня есть таблица студентов в Blazor, которая поступает из api, и я также получаю отправленные данные для обновления информации об учениках, которая в основном является оценкой при изменении в базе данных, pu sh - это работает нормально, и оценка обновляется, но я также хочу изменить цвет фона поля, которое было обновлено в таблице после изменения оценки на красный, только тег td для нескольких se c, мой код такой следуйте:
@foreach(var student in SS.GetStudents()){
<tr>
<td> student.name </>
<td> student.section </>
// trying to compare between the previous and next state
var stud = SS.GetStuentsCopy().SingleOrDefault(s =>s.Id == student.Id);
var color = "";
if(stud.score != student.score){
color = red;
}
<td class="@color"> student.score </>
</tr>
}
@code{
[Inject]
public StudentsStates SS { get; set;}
public StudentsResponse Students { get; set; }
protected override async Task OnInitializedAsync()
{
// Subscribe to the StateChanged EventHandler
SS.StateChanged +=
SSAdvancedStateChanged;
Students = await Service.GetStudents();
// update the students and the copy together
SS.UpdateStudents(Students)
SS.UpdateStudentsCopy(Students)
//upon receiving students updated score
hubConnection = new HubConnectionBuilder()
.WithUrl(NavigationManager.ToAbsoluteUri("/studhub"))
.Build();
hubConnection.On<StudentsResponse>("ReceiveMessage", s =>
{
// update the students after 3 sec update the copy
SS.UpdateStudents(s);
//Here the state is not being updated
// unless there is a new push
// or the issue might be in rendering
// FYI without the sleep also I can see the changes in the color
System.Threading.Thread.Sleep(3000);
SS.UpdateStudentsCopy(s);
}
}}
StudentsStates.cs
namespace Ctrl.Web.Data
{
public class StudentsStates
{
public StudentsResponse Students { get; set; }
public StudentsResponse StudentsCopy { get; set; }
public StudentsResponse GetStudents(){return Students;}
public StudentsResponse GetStudentsCopy(){return StudentsCopy;}
public void UpdateStudents(Students students){ Students = students;}
public void UpdateStudentsCopy(Students students){ StudentsCopy = students;}
}}
Как я уже сказал выше, все работает нормально, за исключением случаев, когда в se c есть несколько pu sh, первый Цвет фона выставленной студенческой оценки меняется слишком быстро, иногда вы даже не заметите этого из-за того, что переданные данные и состояние обновляются, я хочу замедлить цвет фона, не влияя на следующую выдвинутую оценку студента или если есть - лучший подход к этому сценарию, мы очень ценим ваши ответы.