sco*_*ker 15 components blazor blazor-server-side
我遇到了一个基本的 blazor 项目的问题。我有一个父组件和一个带有事件回调的子组件,我希望它传回一种类型的 T。我遇到的问题是我在将 MethodGroup 转换为 EventCallback 时出错。如果我将其转换为使用 Action 则它可以工作,但我不能异步执行,这并不理想。任何想法我做错了什么?
家长
<Child
DeleteCallback="@OnDelete"></Child>
public async Task OnDelete(T item)
{
}
Run Code Online (Sandbox Code Playgroud)
孩子
@typeparam T
[Parameter]
public EventCallback<T> DeleteCallback { get; set; }
<a @onclick="() => DeleteCallback.InvokeAsync(item)"></a>
Run Code Online (Sandbox Code Playgroud)
我在这里添加了一个 repo 来解释这个问题。查看 Blazor 的问题,这应该已在 2019 年修复。https://github.com/scott-david-walker/EventCallbackError
Gui*_*rez 22
我遇到了同样的问题,我的代码没有任何问题,只是关闭了 VS 并重新打开和 vuala!我很惊讶这确实发生在我身上好几次...... MS 非常糟糕!
Bri*_*ker 18
你很接近:
<ChildComponent Item="someModel" T="SomeModel" DeleteCallback="OnDeleteSomeModel" />
@code {
SomeModel someModel = new SomeModel();
void OnDeleteSomeModel(SomeModel someModel)
{
...
}
}
Run Code Online (Sandbox Code Playgroud)
EventCallback 使用泛型类型,如果不将类型传递给组件,blazor 将无法推断它。
这意味着,如果您有 a EventCallback<T>,则需要将 的值传递T给组件,例如T="SomeType"。
以下语法对我有用:
// in the component (C#):
[Parameter]
public EventCallback<MovingEventArgs> OnMoving { get; set; }
// on the using side (Razor):
OnMoving="(Component.MovingEventArgs o) => OnMoving(o)"
// on the using side (C#):
protected void OnMoving( Component.MovingEventArgs e ) {
}
Run Code Online (Sandbox Code Playgroud)
似乎发生了变化,并且文档不是最新的。此事件还使用自定义事件参数。
@typeparam就我而言,当我手动定义(不是通过推理)( )时,问题就解决了TItem="int"。
<MyComponent TItem="int" OnChange="Component_Changed" />
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12026 次 |
| 最近记录: |