我正在学习Blazor组件,我想知道StateHasChanged强制组件重新呈现所有自身或仅重新呈现差异。智慧报告指出
通知组件其状态已更改。如果适用,这将导致重新渲染组件。
“这将导致组件重新呈现”是什么意思?
答案 0 :(得分:2)
StateHasChanged将仅导致差异被重新呈现。
为了证明这一点,我创建了以下带有2个按钮的Blazor组件:
var user = await repo.GetUserById(userId);
元素的列表,编号为0 .. 9999 <li>
的值并调用StateHasChanged()这是完整的代码:
<li>
然后我使用Chrome的开发工具来监视websocket。在“网络”选项卡上,单击第一个按钮时,我可以看到1.4 MB通过websockets传输到了客户端:
然后,在单击仅更改第一个元素的第二个按钮之后,我可以看到仅传输了153个字节:
因此,由此得出的结论是,仅“ diff”被渲染。