本篇參考:
GitHub - trailheadapps/dreamhouse-lwc: Sample application for Lightning Web Components on Salesforce Platform. Part of the sample gallery. Real estate use case. Get inspired and learn best practices.
Salesforce LWC學習(三十) lwc superbadge專案實現
背景描述: 我們今天看的demo是salesforce的dream house的UI,這個demo在 salesforce developer gallary中可以查詢到,上述的git hub是它的原始碼。主要功能是一個賣房的應用,可以通過條件查詢需要的房源,點選房源可以檢視到房源詳情以及中介詳情等資訊,和我們之前做的superbadge整體功能很相似,使用到的技術以及排版等基本相同,即一個 lightning app builder中有幾個 lwc component,通過message channel進行元件間通訊。大概UI如下圖所示
本來這個是一個沒啥好說的demo,但是眼神好的我看到了右側的詳情頁面是可以編輯的。因為詳情頁的元件使用的 lightning-record-form,只要有許可權,就會展示編輯頁面。問題就來了。
1. 如果右側的資訊更改了,中間的內容是否可以動態改變呢?
2. 如果中間內容不能級聯改變的話,需要什麼樣的互動方式可以通知他進行動態改變呢?
針對以上的兩個問題,第一個是當前的程式碼肯定沒法動態改變,所以我們需要改變我們的程式碼。第二個問題,我們可以使用message channel,但除了 message channel以外,我們還有沒有其他的方式進行跨元件互動呢? 這裡引出了我們今天的主角: Dynamic Interaction.
一. Dynamic Interaction
我們應該在今年年初的新聞中,就可能看到過salesforce針對 lightning app builder要推出一個low code工具用來實現不同元件之間的互動。使用Dynamic Interaction,Lightning頁面上某個元件中發生的事件,例如使用者單擊列表檢視中的某個item,可以更新頁面上的其他元件。Dynamic Interactions允許管理員使用基於使用者互動的元件建立應用程式,所有這些元件都在Lightning App Builder UI中進行通訊和轉換。官方的demo中,舉得是列表點選,詳情頁展示的demo,類似於了 message channel的功能。那Dynamic Interaction 有什麼需要考慮的?
有什麼限制呢?
所以使用之前需要注意瞭解這些限制,否則設定完成以後很容易產生困惑為什麼不生效。
二. Dynamic Interaction的使用方法
我們以下面的demo進行講解,下圖是 Dream House的元件組成部分。我們所需要用到以及改動的是propertyTileList以及 proprtySummary
我們使用標準的 template,然後將這兩個元件拖動出來。這裡選中了 propertyTileSummary元件以後,右側就可以顯示 Interaction 這個 Tab,我們就可以點選 Add Interaction去設定 dynamic interaction.
這裡source以及event是沒法更改的,目前 interaction只支援Update Properties,後續有可能會新增。updateTimeStamp使用 {!event.}的方式進行動態的賦值。實現propertySummary的事件註冊以後,就會將變數動態互動賦值給 propertyTileList的updateTimeStamp變數。我們將這個欄位設定了set,只要有變數,就refreshApex,從而實現只要右側元件更新,左側的列表也會自動的更新。
至此設定完成。結果展示如下:
1. 我們點選了一個item,右側進行編輯,將3更改成2.
2. save以後,左側的列表也會自動的變更。
總結: dynamic interaction目前支援性還是有限,但是salesforce按照目前的情況後續還會不斷的增強。瞭解目前的限制以及如何實現就OK,期待後續可以更多的使用場景以及更少的限制。篇中有錯誤歡迎指出,有不懂歡迎留言。
作者:zero
部落格地址:http://www.cnblogs.com/zero-zyq/
本文歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連線
如果文章的內容對你有幫助,歡迎點贊~
為方便手機端檢視部落格,現正在將部落格遷移至微信公眾號:Salesforce零基礎學習,歡迎各位關注。