问题描述
我正在尝试在Blazor中复制一个简单的JS方法。这个想法是键入给定单词/句子/等中的每个字符。 W3Schools就是一个很好的例子,说明了一种快速的方法。因此,以他们的示例为例,如何在C#中做与JS中相同的事情?
alias ghci='stack ghci'
我敢肯定这不是一个好方法,因此在这里,但是我认为必须通过Threading来做与var i = 0;
var txt = 'Lorem ipsum dummy text blabla.';
var speed = 50;
function typeWriter() {
if (i < txt.length) {
document.getElementById("demo").innerHTML += txt.charat(i);
i++;
setTimeout(typeWriter,speed);
}
}
相同的事情,只是不确定如何去掺杂。还尝试通过后面的代码中的变量更新HTML。
以下是我到目前为止尝试过的内容:
HTML:
setTimeout
Blazor背后的代码:
<div>
@message
</div>
任何关于最佳方法的建议都将受到赞赏!
解决方法
尝试类似
Task.Run(async() =>
{
for (int i=1; i <= Message.Length; i++)
{
TextToShow = Message.Substring(0,i);
InvokeAsync(StateHasChanged);
await Task.Delay(500);
}
}) ;
,
致电InvokeAsync(StateHasChanged)
应该可以:
...
protected static void TypeMessage(object o)
{
if (charIndex < toType.Length)
{
message = message + toType[charIndex];
charIndex++;
InvokeAsync(StateHasChanged);
}
}