环境 Blazor Net8.0 + FreeSql + Bootstrap Blazor 组件
以下都是自己瞎琢磨的和官网资料搬运,肯定有不少错漏和不合理的地方,非常希望各位大佬评论区给我建议和意见.
1. 组件化需要提升渲染性能的组件,例如触摸屏显示每个商品下单数量的商品列表
避免不必要地呈现组件子树, 执行一些初始化渲染后设置按需渲染, 外部控制按需渲染参数
//按需渲染
[Parameter]
public bool RenderQuantity { get; set; } = true;
protected override bool ShouldRender() => RenderQuantity;
protected override void OnAfterRender(bool firstRender)
{
if (firstRender)
{
//执行一些初始化渲染后设置按需渲染
你的初始化渲染();
StateHasChanged();
RenderQuantity = false;
}
}
protected override async Task OnParametersSetAsync()
{
if (RenderQuantity)
{
_ = Task.Run(async () =>
{
await Task.Delay(500);
RenderQuantity = false;
});
}
}
调用的页面,添加 RenderQuantity 控制渲染数量变化时机. 避免 StateHasChanged() 执行后渲染子组件.
<OrdersMenuList OrderID="@OrderID"
RenderQuantity="@RenderQuantity"
Refresh="@RefreshOrdersMenuList"
/>
private bool RenderQuantity { get; set; }
2. API和UI分离: 例如更新订单数量,操作内存数据渲染到UI,不要等待后台查询订单详单列表后在刷新UI. 异步执行后台服务更新订单数量.
UI 更新数量
Task UpdateQuantity(string userCode, int thisQuantity= 1)
{
//更新订