Blazor 单向绑定

21 篇文章 5 订阅
18 篇文章 0 订阅

目前,我们在页面内部显示了一个组件,但是内容是静态的。我们真正想要的是能够动态输出内容。

如果我们更改/Components/MyFirstComponent.razor的内容,我们可以引入一个私有成员,并使用@符号输出该成员的值。

    <div>
      CurrentCounterValue in MyFirstComponent is @CurrentCounterValue
    </div>
    @code {
      private int CurrentCounterValue = 42;
    }

通过参数接收值

组件中的CurrentCounterValue始终显示值“ 42”,但是如果我们希望父组件告诉我们要显示哪个值呢?为此,请创建一个名为MySecondComponent的新组件,并从MyFirstComponent复制标记,然后将私有成员更改为公共属性。

    <div>
      CurrentCounterValue in MySecondComponent is @CurrentCounterValue
    </div>
    @code {
      public int CurrentCounterValue { get; set; }
    }

编辑“Counter”页面,添加MySecondComponent组件,然后设置其CurrentCounterValue,如下所示:

<MySecondComponent CurrentCounterValue=@currentCount/>

现在,运行应用程序并导航到“Counter”页面将在浏览器的控制台窗口中显示错误。

WASM:System.InvalidOperationException:类型为“ OneWayBinding.Client.Components.MySecondComponent”的对象具有与名称“ CurrentCounterValue”匹配的属性,但没有应用[ParameterAttribute]或[CascadingParameterAttribute]。

这清楚地告诉我们缺少了什么。要将参数添加到组件,我们必须使用[Parameter]属性装饰组件的属性。

    <div>
      CurrentCounterValue in MySecondComponent is @CurrentCounterValue
    </div>
    @code {
      [Parameter]
      public int CurrentCounterValue { get; set; }
    }

这通知Blazor我们希望组件上的参数可以通过看起来像HTML属性的参数进行设置。无论何时重新渲染父组件,Blazor也会重新渲染它提供参数值的任何子组件。这样可以确保子组件被重新渲染,以表示通过[Parameter]装饰属性传递给组件的状态的任何可能变化。

如果再次运行我们的应用程序并导航到“计数器”页面,我们将看到,每当“Counter”页面中的currentCount发生更改时,它将通过其CurrentCounterValue属性将该更改下推到我们的嵌入式组件中。
在这里插入图片描述

注意:参数必须是public属性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cool2Feel

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值