英文:
How is OnParametersSetAsync executed and the number of executions
问题
If there are two parameter changes in the Blazor server, will OnParametersSetAsync be executed once after each change or will OnParametersSetAsync be executed once after both changes are executed. Why does OnParametersSetAsync execute twice when the homepage is first loaded?
我认为Blazor的生命周期有点混乱,比如不确定的OnParametersSetAsync执行次数,OnInitialized执行两次并在第二次重置,以及有时没有真正参数的OnAfterRender。总之,它非常混乱和令人沮丧。
英文:
If there are two parameter changes in the blazer server, will OnParametersSetAsync be executed once after each change or will OnParametersSetAsync be executed once after both changes are executed. Why does OnParametersSetAsync execute twice when the homepage is first loaded
I think the lifecycle of a blazer is a bit chaotic, such as the uncertain number of OnParametersSetAsync executions, OnInitialized executions twice and resetting the second time, and OnAfterRender sometimes without a true parameter. In short, it's very chaotic and frustrating
答案1
得分: 1
以下是翻译好的内容:
流程相当清晰:
OnParametersSet将在每个渲染周期内执行一次,与参数的数量无关,包括零个参数。
在Blazor Server上看到它发生两次是因为RenderMode="ServerPrerendered"
如果不想进行预渲染,请切换到ServerRendered。
英文:
The flow is pretty clear:
OnParametersSet will execute once per render cycle, independent of the number of parameters. Including zero parameters.
You see it happening twice on Blazor Server because of RenderMode="ServerPrerendered"
Switch to ServerRendered if you don't want prerendering.
答案2
得分: 0
Sure, here are the translated parts:
如果在 blazer 服务器中有两个参数更改,
OnParametersSetAsync
会在每次更改后执行一次,还是在两个更改都执行后执行一次?
如果在组件渲染后设置参数值,不会触发子组件上的 OnParametersSetAsync
。
只有在父组件由于 UI 事件处理程序调用或手动调用 StateHasChanged
的结果时才会发生。StateHasChanged
将一个呈现片段的形式排队到渲染器的队列中。渲染器执行此呈现片段并检查任何子组件的参数是否已更改。对可能已更改参数的任何组件都会调用 SetParametersAsync
。
我认为 blazer 的生命周期有点混乱
那是因为您目前没有足够的知识来完全理解它。
这不是一个简单的主题:您不会在一天内掌握组件!我曾经也像你今天一样,所以我理解你的挫败感。
英文:
> If there are two parameter changes in the blazer server, will OnParametersSetAsync
be executed once after each change or will OnParametersSetAsync
be executed once after both changes are executed?
Setting parameter values in a component once it has rendered will not trigger OnParametersSetAsync
on a child component.
That will only happen when the parent component renders either as the result of a UI event handler call or you manually calling StateHasChanged
. StateHasChanged
queues a render request onto the Renderer's queue in the form of a RenderFragment
. The Renderer executes this RenderFragment
and checks if the parameters for any sub-components have changed. It calls SetParametersAsync
on any components where the parameters may have changed.
> I think the lifecycle of a blazer is a bit chaotic
That's because you don't current have the necessary knowledge to fully understand it.
It's not a simple subject: you won't master components in a day! I was once where you are today, so I understand your fustrations.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论