Sveltejs Academy · レッスン

tick():DOM更新を待機する

tick()をawaitして、レイアウト値を読み取る前にDOMが最新の状態を反映するようにします。

レッスン 4/413 ステップ

「tick():DOM更新を待機する」はCoddyKit上の無料Sveltejs Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはSveltejs Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Sveltejs Academyコースには全4レッスンが含まれています。

tickとは

tick()は、保留中の状態変更がDOMに適用された後に解決するPromiseを返します。

インポートする

svelteからインポートします。

<script>
  import { tick } from "svelte";
</script>

待機する理由

状態を変更してすぐにDOMを読み取ると、古い値が表示されることがあります。tick()を使うと、最新の状態を計測できます。

例

新しく挿入された要素までスクロールする前に、tickを待機します。

items = [...items, newItem];
await tick();
lastEl.scrollIntoView();

イベントハンドラー内で使用する

tickをawaitできるように、ハンドラーをasyncにしてください。

async function add() {
  items = [...items, x];
  await tick();
  measure();
}

リアクティブ文内で使用する

async関数でラップしたリアクティブ文から、tickをawaitできます。

afterUpdateとの比較

afterUpdateは更新のたびに実行されますが、tick()は現在保留中の更新だけを待機します。

SSRでの動作

サーバー上ではtick()はすぐに解決されるため、条件分岐なしで使用できます。

よくある落とし穴

awaitを忘れると、tickはPromiseを返すだけで待機しません。必ずawaitしてください。

bind:thisと組み合わせる

tickの用途の多くは、bindされた要素を読み取るか、その要素までスクロールすることです。

小さなヘルパー

繰り返し使うパターンでは、tickとスクロール処理をヘルパーにまとめてください。

async function scrollIntoView(el) { await tick(); el.scrollIntoView(); }

クイックチェック

tick()は何を返しますか。

まとめ

tick()を使うと、次のDOM更新をawaitできるため、その後の読み取りで最新の状態を取得できます。参照と組み合わせて使用してください。

無料で開始

AI チューターと学ぶ HTML — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
41
レッスン
163

よくある質問

「tick():DOM更新を待機する」レッスンは無料ですか?

はい。「tick():DOM更新を待機する」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Sveltejs Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Sveltejs Academyコースには全4レッスンが含まれています。

「tick():DOM更新を待機する」で何を学びますか?

tick()をawaitして、レイアウト値を読み取る前にDOMが最新の状態を反映するようにします。 ブラウザで直接実行するハンズオンコードでSveltejs Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Sveltejs Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのSveltejs Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「tick():DOM更新を待機する」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このSveltejs Academyレッスンでコードを書いて実行できますか?

はい。すべてのSveltejs Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. onMount:レンダリング後の処理
  2. onDestroy:クリーンアップ
  3. beforeUpdateとafterUpdate
  4. tick():DOM更新を待機する
← Sveltejs Academyに戻る