c# - blazor,task.delay,css 操作
问题描述
我想在 blazor 中创建渐变效果,例如https://gradienta.io/editor移动角度滑块。我想通过使用 task.delay 函数来做到这一点,但只显示了 1 和 3,我在这里缺少的是 2 没有显示。最终我想把它放在一个循环中,以设置运动中的渐变。
<div class="box-size" style=@myStyle>
@content
</div>
}
@code {
public string myStyle = "";
public string content = "";
protected override async Task OnInitializedAsync()
{
myStyle = "background-image: linear-gradient(80deg, #FF0055 0%, #000066 100%)";
content = "1";
await Task.Delay(5000);
myStyle = "background-image: linear-gradient(160deg, #FF0044 0%, #000066 100%)";
content = "2";
await Task.Delay(5000);
myStyle = "background-image: linear-gradient(240deg, #FF0011 0%, #000066 100%)";
content = "3";
}
解决方案
Blazor 将在您的方法的第一个部分自动调用 StateHasChanged() await
(这将呈现并显示 step1)。
然后它将在您的方法结束时再次自动调用 StateHasChanged() - 这将呈现第 3 步。
要查看第 2 步,您需要在中间额外调用 StateHasChanged()
protected override async Task OnInitializedAsync()
{
myStyle = "background-image: linear-gradient(80deg, #FF0055 0%, #000066 100%)";
content = "1";
await Task.Delay(5000);
myStyle = "background-image: linear-gradient(160deg, #FF0044 0%, #000066 100%)";
content = "2";
StateHasChanged(); // This will render Step 2
await Task.Delay(5000);
myStyle = "background-image: linear-gradient(240deg, #FF0011 0%, #000066 100%)";
content = "3";
}
推荐阅读
- java - 计算 24 小时制的平均时间(hh:mm:ss)
- airflow - 如何使用 bigquery 运算符将查询参数传递给 sql 文件
- reactjs - 出现以下错误:无法对未安装的组件执行 React 状态更新
- javascript - Chart.JS:当甜甜圈大小足以容纳文本时,如何仅显示数据标签?
- python - sqlalchemy on_duplicate_key_update
- single-sign-on - 具有 IdP 发起的 SSO 的 PingFederate RelayState
- sql - 超过最大长度 SQL
- python-3.x - Docker - 将 python 输出写入当前工作目录中的 csv 文件
- c# - 如何使用查询从 cosmos db 中获取最大 id 值
- python - 清理包含多种文本格式的列并创建新列