相关疑难解决方法(0)

BL0005 - 外部参数使用 - 为什么会出现警告?

BL0005:不应在其组件之外设置组件参数。

我在一个组件中有一个组件。当我的外部组件状态发生变化时,我想更新内部组件的状态。外部组件是一个自动完成实现,改变的状态是输入文本,内部组件是自动完成项目列表,准确地说是突出显示的部分。

所以我通过它的参数改变了内部组件的状态。我收到了这个警告。为什么?

顺便说一句,代码完全按照我的预期工作。状态已同步,我匹配的文本在所有自动完成项目中突出显示。

我的猜测是更改参数可能会导致组件重新呈现自身,在我的情况下,这是完全期望和预期的行为。否则我为什么要在运行时更改组件的参数?

我在网上搜索了警告,但除了那个警告之外我没有发现任何有用的东西:https : //github.com/aspnet/AspNetCore/issues/12293

同样,看起来像我在代码中所做的那样修改参数是一种非常糟糕的做法,但同样,为什么?有没有理由我必须以不那么简单和直接的方式来做,或者有更简单和直接的方式来做到这一点?

blazor

13
推荐指数
1
解决办法
1728
查看次数

Blazor 组件参数不应设置在其组件之外

我正在学习 Blazor。我没有基于组件的编程经验。

我有两个组件: aDateRangePicker和 a RadzenCheckBox

<RadzenFieldset Text="Test Component">
    <DateRangePicker @ref="calendar" />
    <div>
        <Radzen.Blazor.RadzenCheckBox TValue="bool" Change="@((args) => txtBoxChange(args))" />
        <RadzenLabel Text="Check" />
    </div>
</RadzenFieldset>
Run Code Online (Sandbox Code Playgroud)

现在,要求很简单。如果选中该复选框,则显示两个日历,如果未选中则显示一个日历。

我写了以下代码:

@code{
    DateRangePicker calendar;

    public void txtBoxChange(bool args) 
    {
        if (args == true) //shows one calendar when checked
            calendar.ShowOnlyOneCalendar = true;
        else //shows two calendars when unchecked
            calendar.ShowOnlyOneCalendar = false;
    }
}
Run Code Online (Sandbox Code Playgroud)

这工作正常。

但我收到警告:

不应在其组件之外设置组件参数“ShowOnlyOneCalendar”。

我已经阅读了一些关于此警告的博客,其中建议建立父子组件关系以进行组件之间的通信。但这些不是父子关系。

我究竟做错了什么?达到这样的要求并且没有这个警告的最佳方法是什么?

asp.net asp.net-core blazor razor-components

11
推荐指数
1
解决办法
4723
查看次数

C# Blazor 错误 BL0005 - 正确设置组件属性

我已经对这个错误做了我可以做的研究,只是不理解正确的解决方案。

示例代码(直接取自供应商示例)
https://blazor.syncfusion.com/documentation/menu-bar/getting-started/

<SfMenu Items="@MenuItems"></SfMenu>

@code {
    public List<MenuItem> MenuItems = new List<MenuItem>{
        new MenuItem{ Text = "File", Items = new List<MenuItem>{
            new MenuItem{ Text= "Open" },
            new MenuItem{ Text= "Save" },
            new MenuItem{ Text= "Exit" }}
    },
        new MenuItem{ Text = "Edit", Items = new List<MenuItem>{
            new MenuItem{ Text= "Cut" },
            new MenuItem{ Text= "Copy" },
            new MenuItem{ Text= "Paste" }}
    },
        new MenuItem{ Text = "View", Items = new List<MenuItem>{
            new MenuItem{ Text = "Toolbars" },
            new MenuItem{ …
Run Code Online (Sandbox Code Playgroud)

c# blazor visual-studio-2019

2
推荐指数
1
解决办法
358
查看次数