LWC 開發筆記
在 Salesforce 內開發 lwc 時遇到一個情境:每當資料更新時,期望該網頁元件會自動往下捲到最底。故需先選到指定的網頁元件,然後自動捲到最底。
實踐方法
scroll.html
<template>
<div class="dialog-body">
...
</div>
</template>
scroll.js
使用 this.template.querySelector
選擇欲操作的 DOM
因為要捲到最底部,所以 scrollTop
的高度是該 DOM 的 scrollHeight
handleDialogScrolltoTop() {
const dialogBody = this.template.querySelector(".dialog-body");
dialogBody.scrollTop = dialogBody.scrollHeight;
}
同場加映:如何 focus 特定元件
概念和 scroll 類似,需要先選定要 focus 的元件,然後在期望的時機點觸發 focus
focus.html
<template>
<lightning-textarea type="text" class="textarea answer-textarea" value={messageInput} onchange={messageInputHandleChange}>
</lightning-textarea>
</template>
focus.js
使用 this.template.querySelector
選擇欲操作的 textarea
focusTextarea() {
const ansTextarea = this.template.querySelector(".answer-textarea");
ansTextarea.focus();
}
心得
因為在 Salesforce 的框架內,故有些寫法會和原生不太一樣需要習慣,而像是在作自動 scroll 或是 focus 時有可能會遇到資料同步的順序問題,這時再針對自己想要的流程加上 ayns/await 或 Promise 即可。
參考資料
相關文件可參考: