Svelte AppsにおけるコンポーネントとDOMイベントの取り扱い
7521 ワード
アマゾンで私の本をチェックしてくださいhttps://www.amazon.com/John-Au-Yeung/e/B08FT5NT62
今すぐ私の電子メールリストを購読http://jauyeung.net/subscribe/
SvelteはフロントエンドのWebアプリを開発するための、最新のフロントエンドのフレームワークです.
それを使用するように簡単ですし、結果を高速作成することができます.
本稿では、svelteコンポーネントのDOMイベントをどのように扱うかを見ていきます.
私たちは
The
したがって、マウスの位置にアクセスすることができます
最後に、画面に表示します.
イベントハンドラは以下のようにインラインで宣言できます:
Svelteは、オンザフライで付着し、分離することによってそれを最適化するので、インラインイベントハンドラーは、アプリケーションのパフォーマンスに影響を与えません.
DOM Eventディレクティブは、それらの振る舞いを変更するために修飾子を付けることができます.
例えば、我々は
その他の修飾子には 彼らは、同様に連鎖することができます
写真でMarvin Meyer をUnsplash
コンポーネントはイベントをディスパッチできます.たとえば、子から親へのイベントを送信するには、次のコードを記述できます.
で
時
したがって、我々が送信挨拶ボタンをクリックするとき、我々は「ハローマルイ」が警報ボックスに表示されるのを見ます.
コンポーネントイベントはDOMイベントのように泡を吹かない.他のコンポーネントに転送するには、
イベントを進めるコンポーネントのイベントを聞くことができます.
例えば、以下のように書くことができます.
イン
DOMイベントをコンポーネントイベントのように進めることができます.例えば、以下のように書くことができます.
したがって、我々は'ハロー'アラート画面を表示するときに我々は、送信ボタンを送信をクリック表示されます.
SvelteコンポーネントとDOM要素にはイベントハンドラを接続できます.
我々は、イベントを使用して
イベントは、
今すぐ私の電子メールリストを購読http://jauyeung.net/subscribe/
SvelteはフロントエンドのWebアプリを開発するための、最新のフロントエンドのフレームワークです.
それを使用するように簡単ですし、結果を高速作成することができます.
本稿では、svelteコンポーネントのDOMイベントをどのように扱うかを見ていきます.
イベント
私たちは
on:
イベントを処理するディレクティブ.例えば、マウスを画面の周りに動かすと、マウスの位置を得るために、次のように書くことができます.App.svelte
○<script>
let pos = { x: 0, y: 0 };
const handleMousemove = event => {
pos.x = event.clientX;
pos.y = event.clientY;
};
</script>
<style>
div {
width: 100vw;
height: 100vh;
}
</style>
<div on:mousemove={handleMousemove}>
The mouse position is {pos.x} x {pos.y}
</div>
上のコードではon:mousemove={handleMousemove}
付けるhandleMousemove
我々の部門へのハンドラーThe
handleMousemove
関数はevent
パラメータMouseEvent
オブジェクト.したがって、マウスの位置にアクセスすることができます
clientX
and clientY
マウスのX、Y位置のプロパティ.最後に、画面に表示します.
イベントハンドラは以下のようにインラインで宣言できます:
App.svelte
○<script>
let pos = { x: 0, y: 0 };
</script>
<style>
div {
width: 100vw;
height: 100vh;
}
</style>
<div on:mousemove={event => {
pos.x = event.clientX;
pos.y = event.clientY;
}}>
The mouse position is {pos.x} x {pos.y}
</div>
または、以下のように引用符の間に置くことができます.App.svelte
○<script>
let pos = { x: 0, y: 0 };
</script>
<style>
div {
width: 100vw;
height: 100vh;
}
</style>
<div on:mousemove="{event => {
pos.x = event.clientX;
pos.y = event.clientY;
}}">
The mouse position is {pos.x} x {pos.y}
</div>
引用符はいくつかの環境で構文強調表示を提供しますが、オプションです.Svelteは、オンザフライで付着し、分離することによってそれを最適化するので、インラインイベントハンドラーは、アプリケーションのパフォーマンスに影響を与えません.
修飾子
DOM Eventディレクティブは、それらの振る舞いを変更するために修飾子を付けることができます.
例えば、我々は
once
修飾子on:click
要素のマウスクリックを一度だけ聞いてください.App.svelte
○<script>
const handleClick = () => {
alert("alert");
};
</script>
<button on:click|once={handleClick}>
Click Me Once
</button>
The once
上のコードの修飾子はhandleClick
ハンドラを一度、もう一度ボタンをクリックすると、何も実行されません.その他の修飾子には
preventDefault
— 呼び出しevent.preventDefault
ハンドラを実行する前にstopPropagation
— 呼び出しevent.stopPropagation
イベントが次の要素に到達するのを防ぐpassive
— タッチまたはホイールイベントでスクロールパフォーマンスを向上させるcapture
— バブリング段階ではなく捕捉段階中にハンドラーを火災させるself
— トリガハンドラのみevent.target
要素自体です.on:click|once|self
○○.写真でMarvin Meyer をUnsplash
コンポーネントイベント
コンポーネントはイベントをディスパッチできます.たとえば、子から親へのイベントを送信するには、次のコードを記述できます.
App.svelte
○<script>
import Button from "./Button.svelte";
const handleGreet = event => {
alert(event.detail.text);
};
</script>
<Button on:greet={handleGreet} />
Button.svelte
○<script>
import { createEventDispatcher } from "svelte";
const dispatch = createEventDispatcher();
const greet = () => {
dispatch("greet", {
text: "Hello Mary"
});
};
</script>
<button on:click={greet}>
Send Greeting
</button>
インButton
, 私たちはdispatch
と定数createEventDispatcher
関数.dispatch
イベントの名前とペイロードをイベントエミッションで引数として送信する関数です.で
App
うーん、我々はgreet
イベントButton
によってhandleGreet
イベントリスナーon:greet
ディレクティブ.時
handleGreet
後に走るgreet
イベントは、event
オブジェクトはイベントエミッションで送信されたデータを持ち、event.detail.text
○○.したがって、我々が送信挨拶ボタンをクリックするとき、我々は「ハローマルイ」が警報ボックスに表示されるのを見ます.
イベント転送
コンポーネントイベントはDOMイベントのように泡を吹かない.他のコンポーネントに転送するには、
forward
関数呼び出しdispatch
○○.イベントを進めるコンポーネントのイベントを聞くことができます.
例えば、以下のように書くことができます.
Button.svelte
○<script>
import { createEventDispatcher } from "svelte";
const dispatch = createEventDispatcher();
const greet = () => {
dispatch("greet", {
text: "Hello Mary"
});
};
</script>
<button on:click={greet}>
Send Greeting
</button>
Parent.svelte
○<script>
import Button from "./Button.svelte";
import { createEventDispatcher } from "svelte";
const dispatch = createEventDispatcher();
const forward = () => {
dispatch("greet", event.detail);
};
</script>
<Button on:greet />
App.svelte
○<script>
import Parent from "./Parent.svelte";
const handleGreet = event => {
alert(event.detail.text);
};
</script>
<Parent on:greet={handleGreet} />
上のコードでButton.svelte
は、greet
イベント、そしてParent.svelte
コンポーネントはイベントを転送しますApp.svelte
聞くgreet
イベント.イン
Parent.svelte
(株)<Button on:greet />
と同じです.<Button on:greet={forward} />
イベントフォワーディング
DOMイベントをコンポーネントイベントのように進めることができます.例えば、以下のように書くことができます.
Button.svelte
○<button on:click>
Send Greeting
</button>
Parent.svelte
○<script>
import Button from "./Button.svelte";
</script>
<Button on:click />
App.svelte
○<script>
import Parent from "./Parent.svelte";
const handleClick = event => {
alert("Hello");
};
</script>
<Parent on:click={handleClick} />
上のコードをクリックしますButton
to Parent
and Parent
to App
○○.したがって、我々は'ハロー'アラート画面を表示するときに我々は、送信ボタンを送信をクリック表示されます.
結論
SvelteコンポーネントとDOM要素にはイベントハンドラを接続できます.
我々は、イベントを使用して
on:
修飾子を持つディレクティブ.イベントは、
on:
任意の値を設定せずにディレクティブ.Reference
この問題について(Svelte AppsにおけるコンポーネントとDOMイベントの取り扱い), 我々は、より多くの情報をここで見つけました https://dev.to/aumayeung/handling-component-and-dom-events-in-svelte-apps-16dbテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol