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
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
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.5k
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.2k
脱法Svelte / Evasion of svelte rules
ssssota
1
350
Other Decks in Programming
See All in Programming
為什麼你並不需要ViewModel / No, you don't need a ViewModel
lovee
1
490
Laravelで学ぶ Webアプリケーションチューニング入門/web_application_tuning_101
hanhan1978
4
1.8k
Japan Community Day at Kubecon + CloudNativeCon Japan 2026: Learning Container Privilege Control by Building My Own Low-Level Container Runtime
ternbusty
1
150
進化を続けるGo toolsの現在地 / The Current State of Ever-Evolving Go Tools
hond0413
0
210
琵琶湖の水は止められてもNet--HTTPのリトライは止められない / You might be able to stop the water flow of Lake Biwa but you can't stop Net::HTTP retries
luccafort
PRO
0
690
170k Jobs a Day on GKE: Scaling Mercari's CI Platform - and What's Next for AI-Native Development
junyaokabe
0
110
GDG Korea Android: 2026 I/O Extended ~ What's new in Android development tools
pluu
0
220
AI Engineeringは、AIプロダクトだけのものか? 〜AIがソフトウェアを作る時代の新しい当たり前〜 / No AI in your product. AI Engineering in your development.
rkaga
4
400
メールのエイリアス機能を履き違えない
isshinfunada
0
230
属人化した知識を、 AIが辿れる地図にする
pkshadeck
PRO
1
170
ITヒヤリハットを整理してみた ~ライフサイクルと原因から考える再発防止策~
koukimiura
1
140
freeeにおけるEvalsの実践例の紹介
freee
PRO
0
110
Featured
See All Featured
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
Git: the NoSQL Database
bkeepers
PRO
432
67k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
270
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
160
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
400
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.2k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.6k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
200
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
480
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
250
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
270
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を扱う 直接使う場合は注意が必要 イベントリスナーの解除を忘れないように デフォルトで更新されないことを意識する 内部でコンポーネントは使えない 基本的にはテスト用途での利用に留めたほうが良さそう
本格的に使うならラッパーを作ることを検討する