我有两个组件,Child.razor和Parent.razor.
该Child.razorHTML:
<input type="text" value="@Text" />
Run Code Online (Sandbox Code Playgroud)
在Child.razorC#:
[Parameter] public string Text { get; set; }
Run Code Online (Sandbox Code Playgroud)
和Parent.razorHTML:
<Child @ref="child_1" />
<Child @ref="child_2" />
<Child @ref="child_3" />
Run Code Online (Sandbox Code Playgroud)
Parent.razor C#:
Child child_1;
Child child_2;
Child child_3;
void SetText(Child item, string text)
{
item.Text = text;
}
Run Code Online (Sandbox Code Playgroud)
我收到警告item.Text = text:
警告 BL0005:不应在其组件之外设置组件参数“文本”。
经过一番谷歌搜索,我发现了这个问题:BL0005 - 外部参数使用 - 为什么会出现警告?
答案很好,但它没有提供替代方案(github 上的链接内容也不是很有帮助)。
从父级改变组件参数的正确方法是什么?
编辑
再澄清一点:我知道我可以使用绑定,但我需要能够更改SetText方法内的值,将我想要变异的 Child 作为参数传递。绑定的问题在于变量没有与组件绑定。换句话说:对于 Child 的引用,我不知道应该设置哪个绑定字符串。
例如:
<Child @ref="child_1" …Run Code Online (Sandbox Code Playgroud) 我已经对这个错误做了我可以做的研究,只是不理解正确的解决方案。
示例代码(直接取自供应商示例)
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)