【发布时间】:2019-11-14 08:13:19
【问题描述】:
BL0005:组件参数不应设置在其组件之外。
我在组件中有一个组件。当我的外部组件状态发生变化时,我想更新内部组件的状态。外部组件是一个自动完成实现,改变的状态是输入文本,内部组件是自动完成项目列表,准确的说是高亮部分。
所以我通过它的参数改变了内部组件的状态。我得到了这个警告。为什么?
顺便说一句,代码的工作方式完全符合我的预期。状态已同步,我的匹配文本在所有自动完成项中突出显示。
我的猜测是更改参数可能会导致组件重新呈现自身,在我的情况下,这是完全期望和预期的行为。为什么要在运行时更改组件的参数?
我在网上搜索了警告,但除此之外我没有找到任何有用的东西: https://github.com/aspnet/AspNetCore/issues/12293
再一次,看起来像我在代码中那样修改参数是一种非常糟糕的做法,但同样,为什么?是否有理由我必须以不那么简单和直接的方式这样做,或者有更简单和直接的方式来做到这一点?
【问题讨论】:
-
关闭参数警告并恢复。推荐人stackoverflow.com/a/62703421/11792002
-
我选择了一种不同的方法——我在组件中创建了一个公共的 setter 方法。我知道这仍然可能是一件有点阴暗的事情,但至少它减轻了一些混乱。我了解父元素(重新)在渲染时设置参数,因此在代码中更改它们可能会令人困惑。现在,当中间有一个方法调用时,调试起来就更干净了。它还表明在代码中发生了一些非标准的事情。
标签: blazor