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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
TOMIKAWA Sotaro
August 30, 2024
Programming
330
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.3k
Atomics APIを知る / Understanding Atomics API
ssssota
2
1.3k
なんでRustの環境構築してないのにRust製のツールが動くの? / Why Do Rust-Based Tools Run Without a Rust Environment?
ssssota
15
55k
Web技術を最大限活用してRAW画像を現像する / Developing RAW Images on the Web
ssssota
2
3.2k
漸進。
ssssota
0
3.6k
Preact、HooksとSignalsの両立 / Preact: Harmonizing Hooks and Signals
ssssota
1
3.7k
useSyncExternalStoreを使いまくる
ssssota
6
6.9k
React CompilerとFine Grained Reactivityと宣言的UIのこれから / The next chapter of declarative UI
ssssota
8
6.2k
脱法Svelte / Evasion of svelte rules
ssssota
1
340
Other Decks in Programming
See All in Programming
キャリア迷子上等 ─ "ない道"は自分で作ればいい
16bitidol
3
2.3k
LLM本来の能力を解き放つサンドボックス技術とAI民主化への適用
yukukotani
3
4.6k
Hunting Vulnerabilities in Symfony with LLMs
vinceamstoutz
0
560
ローカルLLMを使ってB2Bサービスを作っていての学び
yaotti
0
220
1B+ /day規模のログを管理する技術
broadleaf
0
120
コンテキストの使い捨てをやめる — ビジネスルール駆動開発と miko —
ioki
0
240
さぁV100、メモリをお食べ・・・
nilpe
0
160
Vue × Nuxt × Oxc どこまで使える?実運用の現在地
andpad
0
310
「AIで開発し、AIを届ける」をEvalでつなぐ 〜AIネイティブに始めるプロダクト開発の実践〜 / Connecting "Develop with AI, deliver AI" with Eval
rkaga
4
5.4k
過去最大のMCPアップデート! 2026-07-28 RC版の謎に迫る
licux
6
410
Language Server 使ってる? 〜VSCode と Zed の場合〜 / Are you using a Language Server? ~For VS Code and Zed~
handlename
0
810
Creating Composable Callables in Contemporary C++
rollbear
0
170
Featured
See All Featured
Ruling the World: When Life Gets Gamed
codingconduct
0
260
The Mindset for Success: Future Career Progression
greggifford
PRO
0
370
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.8k
Reality Check: Gamification 10 Years Later
codingconduct
0
2.2k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
420
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
220
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Designing for Timeless Needs
cassininazir
1
260
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.6k
Technical Leadership for Architectural Decision Making
baasie
3
420
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を扱う 直接使う場合は注意が必要 イベントリスナーの解除を忘れないように デフォルトで更新されないことを意識する 内部でコンポーネントは使えない 基本的にはテスト用途での利用に留めたほうが良さそう
本格的に使うならラッパーを作ることを検討する