为什么 blazor 服务器端应用在触发@onkeyup时不重新呈现页面

Why doesn't blazor server side app not re-render the page when @onkeyup is triggered

提问人:Dennis 提问时间:11/4/2023 更新时间:11/4/2023 访问量:28

问:

我的 Blazor 服务器端组件应该对文本区域中的字符进行计数并显示计数。组件是:


<div class="d-flex flex-column justify-content-center">
    <textarea @onkeyup="TextUpdate" @bind="CommentText" rows="8" cols="50"></textarea>
    <p>Characters: @Characters</p>
</div>

@code {
    private string CommentText{ get; set; } = string.Empty;
    private string Characters{ get; set; } = string.Empty;

    protected override void OnInitialized()
    {
        Characters = "0";
    }

    private void TextUpdate()
    {
        Characters = CommentText.Length.ToString();
        StateHasChanged();
    }
}

我以为每次在文本区域中键入字符时,显示的字符数都会更新。但是,什么也没发生。

如果我在方法 TextUpdate() 中放置一个断点,则字符数会正确更新。

我是否错误地使用了@onkeypress?

我想对文本区域中的字符进行计数,显示计数并在键入每个字符时更新计数。

事件 blazor-server-side

评论

0赞 T.Trassoudaine 11/4/2023
不是因为,而是因为。它只会在失去焦点时更新。如果要直接获取修改,则需要更新每个输入的值。请注意,由于网络时间或长时间的计算,更新每个输入可能会在 Blazor 服务器上产生一些滞后的结果(如果处理不当)。@onkeypress@bindCommentText
0赞 Dennis 11/5/2023
我还在 stackoverflow.com/questions/63163816/ 找到了解决方案。

答: 暂无答案