国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Study Blazor .NET(四)數據綁定

incredible / 3072人閱讀

摘要:下面是支持的事件參數方法方法這里是組件間雙向綁定的另一種方法,我們可以基于任何事件方法的執行手動觸發一個,在中,用內置函數手動觸發屬性,同時回調父組件中相應的方法,在父組件中,通過通知狀態已經改變。

翻譯自:Study Blazor .NET,轉載請注明。

數據綁定

單向綁定

在blazor中單向綁定簡單而直接,無需UI刷新或渲染。下面示例展示了單向數據綁定:

//Counter.razor@page "/counter"

Counter

Current count: @currentCount

@functions { int currentCount = 0; void IncrementCount() { currentCount++; }}

這里 @currentComponent 的值會根據點擊 Click me 按鈕的次數而增加。

標簽元素的值會自動刷新無需任何其它組件刷新。

雙向綁定

Blazor為雙向綁定提供多種選擇,與一些流行的JS語言相比實現起來更加優雅。

相同組件中使用綁定

在blazor中,bind 特性支持雙向數據綁定,在下面的例子中,checkbox 在同一個組件中使用了 bind 屬性:

//TwoWayBind.razor@page "/two-way-binding"

This string will get value from above text field : @updateString.ToString()

@functions { Boolean updateString {get; set;} = true;}

雙向數據綁定也能用lamda表達式通過 onchange 特性實現。不用擔心,Blazor提供了綁定屬性的簡單方法,更多細節如下:

//TwoWayBind.razor@page "/two-way-binding"

This string will get value from above text field: @updateString

@functions { string updateString = "";}

bind 特性可以使用值和事件 bind-value- 進行擴展,上面的示例可以用 oninput 代替 onchange 重寫如下:

//TwoWayBind.razor@page "/two-way-binding"

This string will get value from above text field : @updateString

@functions { string updateString = "";}

不同組件間使用綁定

方法 1

組件之間傳遞的數據通過組件屬性及其屬性映射完成,這種方法使用 Action 數據類型。

//ParentComponent.razor

Parent Component

String in Parent: @parentString

@functions{ private string parentString = "Initial Parent String"; private void PassToChild() { parentString += "- To Child"; } private void ReceivedFromChild(string str) { parentString = str; StateHasChanged(); }}
//ChildComponent.razor

Child Component

String received from Parent : @ToChild

@functions{ [Parameter] private string ToChild{get;set;} [Parameter] Action FromChild{get;set;} private string childString; private void PassToParent() { childString = ToChild + "- To Parent"; FromChild(childString); }}

ChildComponent中的 FromChild 特性/屬性用 Action 類型從子組件向父組件傳遞值。在父組件中有一個帶有 string 類型參數的響應函數,ChildComponent組件中的按鈕點擊操作觸發這個函數,并且反過來通知 PassToParent 函數,為了通知父組件中的狀態已經改變,我們使用了Blazor內置函數 StateHasChanged()

方法 2

這種方法使用 EventCallback 數據類型指定事件變更來傳遞信息從而代替具體的數據,這里不需要再調用 StateHasChanged() 函數。

//ParentComponent.razor

Parent Component

Logging Event triggered from Child: @logString

@functions{ private string logString = ""; private void TriggerFromChild(UIMouseEventArgs e) { logString = e.ToString(); }}
//ChildComponent.razor

Child Component

@functions{ [Parameter] private EventCallback Trigger { get; set; } }

在ChildComponent中,Trigger 屬性回調ParentComponent中相應的帶有 UIMouseEventArgs參數的TriggerFromChild 方法,同時在父組件中以字符串形式記錄。

下面是支持的事件參數:

  • UIEventArgs
  • UIChangeEventArgs
  • UIKeyboardEventArgs
  • UIMouseEventArgs

方法 3

這里是組件間雙向綁定的另一種方法,我們可以基于任何事件/方法的執行手動觸發一個 Action

//ParentComponent.razor

Parent Component

Logging Event triggered from Child: @logString

@functions{ private string logString = ""; private void TriggerFromChild() { logString = "Triggered From Child using Action and Invoke"; StateHasChanged(); }}
//ChildComponent.razor

Child Component

@functions{ [Parameter] private Action EventFromChild{get;set;} private void Trigger() { EventFromChild?.Invoke(); } }

在ChildComponent中,用內置函數 Invoke 手動觸發 EventFromChild Action 屬性,同時回調父組件中相應的 TriggerFromChild 方法,在父組件中,通過 StateHasChanged() 通知狀態已經改變。

級聯值和參數

Blazor提供了一種跨越整個RenderTree(所有組件)傳遞數據的方法,使用 CascadingValueCascadingParameter 代替傳遞組件特性。傳遞的值可以被RenderTree (子組件)通過裝飾屬性 CascadingParameter 代替 Parameter 接收。

//RootComponent.razor@page "/base-component"

App Base Component

@functions { private string pName {get;set;} = "New To Blazor"; private int pAge {get;set;} = 35;}
//ParentComponent.razor

Parent Component

Profile Name is : @Name and Age is : @Age.ToString();

@functions{ [CascadingParameter(Name = "ProfileName")] string Name { get; set; } [CascadingParameter(Name = "ProfileAge")] int Age {get;set;}}

CascadingParameter 中,Name 參數必須與具有 CascadingValue 組件的 Name 屬性匹配,如果我們沒有聲明 Name,那么 CascadingParameter 中的變量類型與 CascadingValue 中的 Value 屬性匹配。

最好聲明 Name 參數,以避免混淆,這在應用程序規模增長時很有用。

渲染片段,動態內容

除了用特性從父組件向子組件傳遞內容,還可以在組件的 tag 元素中傳遞內容,并且可以使用 RenderFragment 屬性在子組件中呈現。

方式 1

ChildContent 是我們需要在子組件中使用的命名約定,以獲取父組件的內容,

//ParentComponent.razor

Parent Component

The line here is passed to child from Parent!!!
//ChildComponent.razor

Child Component

@ChildContent

@functions{ [Parameter] private RenderFragment ChildContent { get; set; } }

方式 2

RenderFragment 主要用于模板化目的,并基于子組件內部的邏輯呈現內容。

//ParentComponent.razor

Parent Component

Bold Text here!!!

//ChildComponent.razor

Child Component

@for(var i = 1; i <= 3; i++) {
Line No : @i
@SampleText
}
@functions{ [Parameter] private RenderFragment SampleText { get; set; } }

此時 SampleText 不是已經存在的組件,它是在父組件中的 ChildComponent tag元素中新生成的,同時在子組件中也聲明了相同的命名為 SampleText 的屬性。

SampleText 中的文本在子組件里循環渲染3次,這非常有助于創建模板組件、表格等。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/124543.html

相關文章

  • React 導讀(一)

    摘要:需要有一定的基礎和的使用經驗。這就是屬性的作用。方法接收一個新對象來重新賦值。也接收一個函數,這個回調函數這里我默認有一個參數,表示之前的的值,這個函數的返回值就是最新的。但是不同的是在組件內部是只讀的。 前言 寫這篇文章的主要目標是讓初學者更快的上手 React 的項目開發,能有一個循循漸進的理解過程。需要有一定的 JavaScript 基礎和 NPM 的使用經驗。不多說了,下面會按...

    kumfo 評論0 收藏0
  • Cookie學習

    摘要:服務器檢查該,以此來辨認用戶狀態。該值會在瀏覽器再次發起請求時,傳遞給服務器失效的時間,單位秒。如果為,表示刪除該。該值可以在服務器運行時動態設置該是否僅被使用安全協議傳輸。安全協議有,等,在網絡上傳輸數據之前先將數據加密。 什么是Cookie? ? ? Cookie是由W3C組織提出,最早由NetScape社區發展的一種機制。 ? ? Cookie是存儲于訪問者的計算機中的變量。每當...

    Bamboy 評論0 收藏0
  • .net打獨立運行環境遇到無法trim遇到的bug

    摘要:如何解決呢編輯器解決方案編輯器編輯器介紹如下編輯器編輯器這是一個大佬用寫的支持把你的所有依賴打包獨立運行時,支持跨平臺的。背景介紹工作中我用到kotlin寫代碼,在orm上ktorm是一款非常優秀的操作db的框架,我喜歡用它所以我寫了一個插件能夠增加我的工作效率,這款idea插件的主體邏輯是.net開發的(沒錯是跨平臺的.net)。因為db-schema的解析邏輯我很在以前寫的一個visua...

    不知名網友 評論0 收藏0
  • Node.js this指針指向module.exports、global、實例,指針顯式、隱式傳

    摘要:一指針指向全局中的指向的是二指針指向對象在函數中指向的是對象,和全局中的不是同一個對象 一、this指針指向module.exports console.log(全局中的this指向的是module.exports); console.log(this); //{} this.obj = Hello World; console.log(this.obj); //Hello World...

    beita 評論0 收藏0

發表評論

0條評論

incredible

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<