我在 Blazor 中有一个组件,它接受方法作为参数。
<SuppliersTable Loader="@LoadS" LoaderO="@LoadO" Adder="@Add" Updater="@Update" Remover="@Remove" />
@code {
async Task<List<Supplier>> LoadS() => (await ModelServiceS.GetAllAsync()).ToList();
async Task<List<Operator>> LoadO() => (await ModelServiceO.GetAllAsync()).ToList();
async Task<bool> Add(Supplier model) => await ModelServiceS.AddAsync(model);
async Task<bool> Update(Supplier model) => await ModelServiceS.UpdateAsync(model);
async Task<bool> Remove(Supplier model) => await ModelServiceS.RemoveAsync(model);
}
Run Code Online (Sandbox Code Playgroud)
但是如果你不把“@”放在方法名称前面,它会做一些完全不同的事情吗?编译器接受两种方式,这就是我问的原因。我有一种感觉,它使用“@”执行方法并将返回值作为参数传递,如果没有“@”,您只是引用父组件要调用的方法(这就是我想要的)。有人可以向我提供有关“@”用法的更多详细信息吗?
SuppliersTable 组件的参数类型如下:
[Parameter] public Func<Task<List<Supplier>>> Loader { get; set; }
[Parameter] public Func<Task<List<Operator>>> LoaderO { get; set; }
[Parameter] public Func<Supplier, Task<bool>> Adder { get; set; }
[Parameter] public Func<Supplier, Task<bool>> Updater { …Run Code Online (Sandbox Code Playgroud)