gpt4 book ai didi

Blazor(服务器端)在同级组件之间进行通信

转载 作者:行者123 更新时间:2023-12-03 18:05:29 26 4
gpt4 key购买 nike

我有三个组件。
组件一包含组件二和三。
组件二是一个列表。
组件三用于向数据库添加项目。

当我将一个项目保存到数据库时,我想更新组件二中的列表。
我怎么做?

最佳答案

设想

让我们假设:

<CRUD>
<GRID/>
<FORM/>
</CRUD>

选项 1: 代表

使用 代表 ,您可以捕获 GRID 的引用组件并调用 GRID来自 FORM 的方法通过代表。试试 delegate sample at blazorfiddle .

简化:

CRUD :
<GRID @ref="mygrid" />
<FORM mydelegate="@( (s) => mygrid.setData(s) )" />

@code
{
protected GRID mygrid;
}

GRID :
<h1>@data</h1>

@code
{
string data;

public void setData(string value)
{
data = value;
StateHasChanged();
}
}

FORM :
<input @bind-value=@somedata />
<button @onclick="@( () => mydelegate(somedata ?? "hi") )">press</button>

@code
{
[Parameter] public Action<string> mydelegate {set; get;}
string somedata;
}

选项 2: 分享列表

只需在组件之间共享您的列表。您也可以订阅 GRIDadd事件列表。更多信息请访问 How to handle add to list event? .当然,您也可以使用 ObservableCollection .也许您可以避免事件,只需添加到列表并调用 StateHasChanged可能就够了。

请记住,您可以通过参数或 cascade parameter 共享列表。 .
<CRUD>
<GRID data=@mylist />
<FORM data=@mylist />
</CRUD>

其他选项。

您是否还有更多选择,例如通过依赖注入(inject)、事件回调、...使用单例。我建议你阅读 3 Ways to Communicate Between Components in Blazor@Chris Sainty

关于Blazor(服务器端)在同级组件之间进行通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57977146/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com