Svelte 작업에 인수 전달
지금 http://jauyeung.net/subscribe/에서 내 이메일 목록을 구독하십시오.
Svelte는 프론트 엔드 웹 앱 개발을 위한 떠오르는 프론트 엔드 프레임워크입니다.
사용이 간편하고 결과를 빠르게 생성할 수 있습니다.
이 기사에서는 매개변수를 작업에 전달하는 방법을 살펴보겠습니다.
매개변수 추가
조치는 인수를 취할 수 있습니다. 즉, 액션이 속한 요소와 함께 호출됩니다.
예를 들어 슬라이더로 변경할 수 있는 지정된 시간 동안 버튼을 클릭하고 누르고 있을 때 메시지를 표시하는 앱을 만들 수 있습니다.
이를 위해 다음 코드를 작성합니다.
longpress.js
export const longpress = (node, duration) => {
let timer;
const handleMousedown = () => {
timer = setTimeout(() => {
node.dispatchEvent(new CustomEvent("longpress"));
}, duration);
};
const handleMouseup = () => {
clearTimeout(timer);
};
node.addEventListener("mousedown", handleMousedown);
node.addEventListener("mouseup", handleMouseup); return {
destroy() {
node.removeEventListener("mousedown", handleMousedown);
node.removeEventListener("mouseup", handleMouseup);
},
update(newDuration) {
duration = newDuration;
}
};
};
App.svelte
:
<script>
import { longpress } from "./longpress.js";
let pressed = false;
let duration = 2000;
</script>
<label>
<input type=range bind:value={duration} max={2000} step={100}>
{duration}ms
</label>
<button use:longpress={duration}
on:longpress="{() => pressed = true}"
on:mouseenter="{() => pressed = false}"
>
press and hold
</button>
{#if pressed}
<p>You pressed for {duration}ms</p>
{/if}
위의 코드에서 longpress
를 인수로 사용하는 duration
작업을 만들었습니다.
전달될 때 update
를 업데이트하기 위해 반환하는 객체에 duration
메서드가 있습니다.
그런 다음 마우스를 클릭하면 mousedown
이벤트가 발생하고 handleMousedown
가 호출됩니다.
longpress
를 통해 지정된 duration
다음에 사용자 지정setTimeout
이벤트를 전달합니다.
그런 다음 마우스 버튼을 놓으면 handleMouseup
가 호출되고 나서 clearTimeout
가 호출됩니다.
그런 다음 App.svelte
에는 메시지를 보기 위해 길게 누르는 버튼이 있습니다. 메시지가 표시될 때까지 길게 누르기가 지속되는 시간을 조정하는 슬라이더가 있습니다.
이것은 longpress
지시문을 사용하여 longpress
작업에 첨부된 버튼에서 발생하는 use:longpress
이벤트를 수신했기 때문에 작동합니다.
처음에 버튼 위로 마우스를 가져가면 mouseenter
이벤트가 발생하고 pressed
가 false
로 설정됩니다.
longpress
이벤트가 longprss
에서 발생하고 버튼을 충분히 오래 누르고 있으면 pressed
가 true
로 설정됩니다.
그러면 pressed
가 true
일 때 메시지가 표시됩니다.
여러 인수를 전달해야 하는 경우 다음과 같은 여러 속성을 가진 하나의 객체를 전달합니다.
use:longpress={{duration, foo}}
결론
우리는 하나의 인수를 행동으로 전달할 수 있습니다. 이렇게 하면 우리가 원하는 방식으로 행동을 조정할 수 있습니다.
update
함수는 인수가 업데이트될 때 값을 업데이트하는 데 필요합니다.
Reference
이 문제에 관하여(Svelte 작업에 인수 전달), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/aumayeung/passing-arguments-into-svelte-actions-5ko
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
export const longpress = (node, duration) => {
let timer;
const handleMousedown = () => {
timer = setTimeout(() => {
node.dispatchEvent(new CustomEvent("longpress"));
}, duration);
};
const handleMouseup = () => {
clearTimeout(timer);
};
node.addEventListener("mousedown", handleMousedown);
node.addEventListener("mouseup", handleMouseup); return {
destroy() {
node.removeEventListener("mousedown", handleMousedown);
node.removeEventListener("mouseup", handleMouseup);
},
update(newDuration) {
duration = newDuration;
}
};
};
<script>
import { longpress } from "./longpress.js";
let pressed = false;
let duration = 2000;
</script>
<label>
<input type=range bind:value={duration} max={2000} step={100}>
{duration}ms
</label>
<button use:longpress={duration}
on:longpress="{() => pressed = true}"
on:mouseenter="{() => pressed = false}"
>
press and hold
</button>
{#if pressed}
<p>You pressed for {duration}ms</p>
{/if}
use:longpress={{duration, foo}}
우리는 하나의 인수를 행동으로 전달할 수 있습니다. 이렇게 하면 우리가 원하는 방식으로 행동을 조정할 수 있습니다.
update
함수는 인수가 업데이트될 때 값을 업데이트하는 데 필요합니다.
Reference
이 문제에 관하여(Svelte 작업에 인수 전달), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/aumayeung/passing-arguments-into-svelte-actions-5ko텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)