gpt4 book ai didi

c# - Blazor 事件回调问题父/子组件 "does not have a property matching the name ' OnClickCallback'"

转载 作者:行者123 更新时间:2023-12-04 13:34:51 26 4
gpt4 key购买 nike

问题
所以我在 Blazor 中有一个问题,我试图从子组件 (NavMenu) 调用 MainLayout 父组件中的方法。我想要实现的只是在被告知来自 NavMenu 子组件中的按钮后,在 MainLayout 父组件中打开一个对话框。
我假设这是允许的,因为 NavMenu 和 MainLayout 的父/子概念仍然相同。
我试过的
我已关注 Microsoft Docs Here我似乎根本无法做到这一点。我希望我在做些什么 愚蠢的一双新的眼睛可能会发现这个问题。
当前结果
基本上,一切都很好,但是当我运行应用程序时,Web 控制台中显示以下错误:

Error: System.InvalidOperationException: Object of type 'MyProject.Shared.Components.NavMenu' does not have a property matching the name 'OnClickCallback'.
代码
父组件(MainLayout)
<NavMenu OnClickCallback="@Foo()">
<label>Text value: @text</label>
</NavMenu>

@code {
private string text { get; set; }

async Task Foo()
{
text = "IT WORKS";
// In reality I will actually open a dialog here on the screen
}
}
子组件 (NavMenu)
<MatNavItem AllowSelection="false" @onclick="OnClickCallback">
<MatIcon>settings</MatIcon><span class="miniHover"> Test App Settings</span>
</MatNavItem>

@code {

[Parameter]
public EventCallback OnClickCallback { get; set; }
// I have also tried the "type" event callbacks such as public EventCallback<bool> OnClickCallback { get; set; } - but still get the same result
}
这是我有史以来第一个堆栈溢出问题,所以希望我做对了。
提前谢谢大家。
解决方案:
经过一些有用的回答后,这个问题是由于我有两个 NavMenu 组件,我认为 MainLayout 看不到其中一个组件,但事实并非如此,所以我消除了两者之间的歧义。
一些答案还显示我的父组件 OnClickCallback="@Foo()"应该是 OnClickCallback="Foo"这实际上解决了我后来遇到的一个问题。
我的子组件现在也使用: <MatNavItem AllowSelection="false" @onclick="@(() => OnClickCallback.InvokeAsync(true))">调用父组件中的回调,它现在按预期打开我的对话框。
感谢所有帮助过它的人。

最佳答案

错误是字面上的:

... .NavMenu' does not have a property matching the name 'OnClickCallback'.


所以错误与您的代码不匹配。 NavMenu 子组件确实具有该参数属性。
您应该使用 <NavMenu OnClickCallback="Foo"> , 否 @()但这不能解释这个错误。
最好的猜测是您有 2 个组件,名为 <NavMenu>而你看错了。

关于c# - Blazor 事件回调问题父/子组件 "does not have a property matching the name ' OnClickCallback'",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62805524/

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