Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
新しいAPI createRawSnippet触ってみた / What is the crea...
Search
TOMIKAWA Sotaro
August 30, 2024
Programming
370
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
フロントエンドUIフレームワークのこれまでとこれから
ssssota
5
3.3k
ReactとSvelteのその先、Ripple-TS / Beyond React and Svelte: Ripple-TS
ssssota
3
2.8k
Atomics APIを知る / Understanding Atomics API
ssssota
2
1.5k
なんでRustの環境構築してないのにRust製のツールが動くの? / Why Do Rust-Based Tools Run Without a Rust Environment?
ssssota
15
57k
Web技術を最大限活用してRAW画像を現像する / Developing RAW Images on the Web
ssssota
2
3.5k
漸進。
ssssota
0
3.8k
Preact、HooksとSignalsの両立 / Preact: Harmonizing Hooks and Signals
ssssota
1
3.9k
useSyncExternalStoreを使いまくる
ssssota
6
7.2k
React CompilerとFine Grained Reactivityと宣言的UIのこれから / The next chapter of declarative UI
ssssota
8
6.4k
Other Decks in Programming
See All in Programming
AIが生成したコードは読むべきか?抽象化設計とコードの品質保証 / abstraction-design-and-quality
minodriven
12
7.8k
[JA] Domain Modeling with Vanilla Rails: 「操作」から再考するRailsの設計論
yasaichi
4
1.5k
PyConTW 2026 - AI Coding 不只是工具升級, 區域醫院醫療資訊系統協作開發與資訊團隊轉型實踐
cclai999
0
210
クラウドエージェントは、 何がそんなに便利なのか / what makes cloud agents so useful
rkaga
3
640
社内AIエージェント「Askワンバン」における コストチューニングの取り組み
t0yohei
0
120
baseline으로 마이그레이션, 리팩토링 안전하게 맡기기
fornewid
1
690
No More NoSuchMethodError
exoego
1
120
Web Framework Benchmark Battle 2026, Any%
a_matsuda
3
3.1k
パスワード再設定メールのURLについて知っておこう
uyuki234
0
200
Inertia Rails: The One-Person Framework with React & Friends
skryukov
0
200
AI時代のシニアエンジニアとは
yosuke_furukawa
PRO
13
11k
Performance Optimization With LLMs
xleitix
0
230
Featured
See All Featured
StorybookのUI Testing Handbookを読んだ
zakiyama
31
7k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
720
The Cost Of JavaScript in 2023
addyosmani
55
10k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
750
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Six Lessons from altMBA
skipperchong
29
4.5k
Git: the NoSQL Database
bkeepers
PRO
433
67k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
560
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.3k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
570
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
430
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を扱う 直接使う場合は注意が必要 イベントリスナーの解除を忘れないように デフォルトで更新されないことを意識する 内部でコンポーネントは使えない 基本的にはテスト用途での利用に留めたほうが良さそう
本格的に使うならラッパーを作ることを検討する