Creating a componentpermalink
ts
constcomponent = newComponent (options );
クライアントサイドコンポーネント、つまり generate: 'dom'
(もしくは generate
オプションを指定しないまま)でコンパイルされたコンポーネントは JavaScript のクラスです。
ts
importApp from './App.svelte';constapp = newApp ({target :document .body ,props : {// assuming App.svelte contains something like// `export let answer`:answer : 42}});
以下の初期化オプションが提供されています:
option | default | description |
---|---|---|
target |
none | レンダリング先の HTMLElement または ShadowRoot 。このオプションは必須です |
anchor |
null |
target の子要素で、コンポーネントはこれのすぐ前にレンダリングされます |
props |
{} |
コンポーネントに渡す、プロパティのオブジェクト |
context |
new Map() |
コンポーネントに渡す、ルートレベルの context の key-value ペアの Map |
hydrate |
false |
下記参照 |
intro |
false |
true なら、その後の状態変化を待つのではなく、初回レンダリング時にトランジションを再生します。 |
target
の既存の子要素はそのまま残されます。
hydrate
オプションは、新しい要素を作成するのではなく、既存の DOM を(大抵はサーバーサイドレンダリングから)アップグレードするよう Svelte に指示します。これはコンポーネントが hydratable: true
のオプション でコンパイルされた場合にのみ機能します。<head>
要素のハイドレーションは、サーバーサイドレンダリングのコードも hydratable: true
を使ってコンパイルされた場合 (これによって head
内の各要素にマーカーを追加して、コンポーネントがハイドレーション中にどの要素を除去すべきかを認識できるようにする) にのみ適切に動作します。
通常、target
の子要素はそのまま残されますが、hydrate: true
ではすべての子要素が削除されます。そのため anchor
オプションは hydrate: true
と一緒に使用できません。
既存の DOM はコンポーネントと一致している必要はありません。Svelte は DOM をそのまま「修復」します。
ts
importApp from './App.svelte';constapp = newApp ({target :document .querySelector ('#server-rendered-html'),hydrate : true});
$setpermalink
ts
component .$set (props );
プログラムでインスタンスに props をセットします。component.$set({ x: 1 })
はコンポーネントの <script>
ブロック内の x = 1
と同じです。
このメソッドを呼ぶと次のマイクロタスクに更新がスケジュールされます。DOM は同期的に更新されません。
ts
component .$set ({answer : 42 });
$onpermalink
ts
component .$on (ev ,callback );
コンポーネントが event
をディスパッチするたびに、callback
関数が呼び出されるようにします。
呼び出されたときにイベントリスナーを削除する関数が返されます。
ts
constoff =component .$on ('selected', (event ) => {console .log (event .detail .selection );});off ();
$destroypermalink
ts
component .$destroy ();
DOM からコンポーネントを削除し、すべての onDestroy
ハンドラをトリガします。
Component propspermalink
ts
component .prop ;
ts
component .prop =value ;
コンポーネントが accessors: true
でコンパイルされている場合、各インスタンスはコンポーネントの各 props に対するゲッターとセッターを持ちます。値をセットすると(component.$set(...)
によって起こるデフォルトの非同期更新ではなく)、同期的な 更新が起こります。
カスタム要素としてコンパイルする場合を除き、デフォルトでは accessors
は false
です。
ts
console .log (component .count );component .count += 1;
ts
console .log (component .count );component .count += 1;