Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
新しいAPI createRawSnippet触ってみた / What is the crea...
Search
TOMIKAWA Sotaro
August 30, 2024
Programming
340
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
新しいAPI createRawSnippet触ってみた / What is the createRawSnippet?
TOMIKAWA Sotaro
August 30, 2024
More Decks by TOMIKAWA Sotaro
See All by TOMIKAWA Sotaro
ReactとSvelteのその先、Ripple-TS / Beyond React and Svelte: Ripple-TS
ssssota
3
2.6k
Atomics APIを知る / Understanding Atomics API
ssssota
2
1.4k
なんでRustの環境構築してないのにRust製のツールが動くの? / Why Do Rust-Based Tools Run Without a Rust Environment?
ssssota
15
56k
Web技術を最大限活用してRAW画像を現像する / Developing RAW Images on the Web
ssssota
2
3.3k
漸進。
ssssota
0
3.7k
Preact、HooksとSignalsの両立 / Preact: Harmonizing Hooks and Signals
ssssota
1
3.8k
useSyncExternalStoreを使いまくる
ssssota
6
7k
React CompilerとFine Grained Reactivityと宣言的UIのこれから / The next chapter of declarative UI
ssssota
8
6.3k
脱法Svelte / Evasion of svelte rules
ssssota
1
350
Other Decks in Programming
See All in Programming
AWS Transform Customによる Spring Boot 2.xから4.xへのVerUp
satoshi256kbyte
2
120
Go 1.27からのGODEBUG / Go 1.27 リリースパーティ #go127party
mazrean
0
280
tsc.rip を支える技術 / Kyoto.なんか #8
susisu
0
4.2k
DroidKaigi 2026 「個人開発という実験場: Android エンジニアが手にする4つの自由」
slashnephy
0
190
【デモ】Kiroで体験する仕様駆動開発|設計からコーディングまでAIと進める開発フロー
cmkudo
0
550
AIと壁打ちしながら進めるコスト管理
fufuhu
2
1.9k
書籍「プロフェッショナルAI駆動開発」紹介スライド
juntaromatsumoto
0
900
Can LLMs Replicate 4 Years of Compose Migration? Exploring the boundaries of automation with 279 XML files from a real product
makun
0
120
GKE アップグレード前に知っておきたい Blue/Green と PDB の関係
stkk
0
130
PyConJP2026_wat_Python × Signal Processing: How to Draw Pictures with Sound Using Spectrogram Art
wat
0
650
FDEとは、何者なのか?
masapyon1212
0
110
Press start. Python's next generation.
willingc
PRO
3
300
Featured
See All Featured
Designing Experiences People Love
moore
143
24k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
370
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Un-Boring Meetings
codingconduct
0
400
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.8k
Technical Leadership for Architectural Decision Making
baasie
3
550
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.7k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
400
Paper Plane (Part 1)
katiecoart
PRO
1
10k
Transcript
新しいAPI createRawSnippet 触ってみた ssssota
だれ? ssssota フロントエンドエンジニア Svelte Online Meetup常連 3/4回(最多?) Svelte関連のライブラリをよく作ってる svelte-exmarkdown svelte-twc
svelte-(jsx|preact|react)-snippet
createRawSnippetとは? Svelte 5で登場予定の新しいAPI
Snippetをおさらい <slot />を置き換える、Svelte 5で登場予定の概念。 コンポーネント内で定義できて使い回すことができる。 {#snippet snip(arg)} <h1>{arg}</h1> {/snippet} {@render
snip('Hello')} → <h1>Hello</h1>
createRawSnippetはなぜ必要か コンポーネント内で定義できて 「コンポーネント外では定義できないんですか 😠」を解決する 例えば、テスト。 test('render snippet children', () =>
{ render(SomeComponent, { props: { children: ' 🤔🤔🤔' }, }); });
createRawSnippet の使い方 {#snippet link(href, content)} <a {href} onfocus={console.log}>{content}</a> {/snippet} const
link = createRawSnippet((href, content) => ({ render: () => `<a href="${href()}">${content()}</a>`, setup: (a) => { // ↓自分でもろもろ登録する必要がある $effect(() => a.href = href()); $effect(() => a.textContent = content()); a.addEventListener('focus', console.log); return () => a.removeEventListener('focus', console.log); }, }));
まとめ createRawSnippetを使うことでコンポーネント外でSnippet が定義できる インターフェースのクセが強い! Rawという名前だけあって、生のHTML/Elementを扱う 直接使う場合は注意が必要 イベントリスナーの解除を忘れないように デフォルトで更新されないことを意識する 内部でコンポーネントは使えない 基本的にはテスト用途での利用に留めたほうが良さそう
本格的に使うならラッパーを作ることを検討する