【问题标题】:Blazor, can't get embedded component to refreshBlazor,无法让嵌入式组件刷新
【发布时间】:2018-11-01 10:31:02
【问题描述】:

我意识到这不是一个已发布的产品,所以我只是在试验,希望你们中的一些人找到了解决我遇到的问题的方法。

我在组件 A 中包含组件 B。当list 中的一个项目被选中时,组件B 会看到并加载并显示必要的数据。

但是,当我从组件Acombo list 中选择另一个项目时,它不会刷新组件B 的list,我猜这是因为OnInitAsync 没有被调用随后。

有人有解决办法吗?

【问题讨论】:

  • 如果没有任何代码,这很难说,你能把它包括进去吗?
  • 另外,您是否遵循这种模式来进行组件之间的绑定:github.com/aspnet/Blazor/issues/610 ?
  • 是的,我正在遵循这种模式。这就是参数的传递。通过这些参数,ChildComponent 能够从 OnInitAsync 中的后端 Web api 加载数据。之后,当我更改其中一个参数时,需要从后端 Web api 加载新数据,部分问题是 OnInitAsync 已经加载。我试图将它移动到一个函数并从视图中调用它,使其异步,但这并没有太大帮助。我需要先隐藏组件并再次显示它才能调用 OnInitAsync。
  • 我会尝试获取一些代码,但这会很困难,因为它不是我可以在不修改它的情况下真正显示的代码..
  • 好的,很好。请添加它作为答案。

标签: webassembly blazor


【解决方案1】:

对于不阅读 cmets 的每个人,解决方案是在正确的时间致电 StateHasChanged()

在开发 blazor 的某个时候,此要求应由框架自动满足。见here

【讨论】:

    【解决方案2】:

    我有类似的情况,组件 A 必须选择一个应该引用组件 B 选项的值,B 是 A 的子组件

    在组件 B 中使用此方法,并将选择的值作为参数传递给那里

    protected override async void OnParametersSet()
        {
            await getLookupListAsync();
        }  
    

    【讨论】:

      猜你喜欢
      • 2020-12-20
      • 1970-01-01
      • 2021-12-25
      • 2020-10-17
      • 1970-01-01
      • 1970-01-01
      • 2019-11-02
      • 2019-11-15
      • 1970-01-01
      相关资源
      最近更新 更多