スニペットを使用すると、コンテンツを別のファイルに抽出することなく、コンポーネント内で再利用できます。
この演習では、三猿の表を、それらのユニコードエスケープシーケンスとHTMLエンティティとともに作成します。今のところ、猿は1匹しかいません。
もちろん、マークアップを複製することもできます。または、{ emoji, description }
オブジェクトの配列を作成し、{#each ...}
ブロックに渡すこともできます。しかし、よりスマートな解決策は、再利用可能なブロックにマークアップをカプセル化することです。
まず、スニペットを宣言します。
App
{#snippet monkey()}
<tr>
<td>{emoji}</td>
<td>{description}</td>
<td>\u{emoji.charCodeAt(0).toString(16)}\u{emoji.charCodeAt(1).toString(16)}</td>
<td>&#{emoji.codePointAt(0)}</td>
</tr>
{/snippet}
猿は、レンダリングするまで表示されません。やってみましょう。
App
<tbody>
{#snippet monkey()}...{/snippet}
{@render monkey()}
</tbody>
残りの猿のためにスニペットを使用する前に、スニペットにデータを渡す必要があります。スニペットには、0個以上のパラメータを設定できます。
App
<tbody>
{#snippet monkey(emoji, description)}...{/snippet}
{@render monkey('🙈', 'see no evil')}
</tbody>
必要に応じて、分割代入されたパラメータも使用できます。
残りの猿を追加します。
'🙈', '見ざる'
'🙉', '聞かざる'
'🙊', '言わざる'
最後に、不要になった<script>
ブロックを削除します。
App
<script>
let emoji = '🙈';
let description = 'see no evil';
</script>
スニペットはコンポーネント内の任意の場所に宣言できますが、関数と同様に、同じ 'スコープ' または子スコープのレンダリングタグでのみ表示されます。
前へ 次へ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<script>
let emoji = '🙈';
let description = 'see no evil';
</script>
<table>
<thead>
<tr>
<th>emoji</th>
<th>description</th>
<th>unicode escape sequence</th>
<th>html entity</th>
</tr>
</thead>
<tbody>
<tr>
<td>{emoji}</td>
<td>{description}</td>
<td>\u{emoji.charCodeAt(0).toString(16)}\u{emoji.charCodeAt(1).toString(16)}</td>
<td>&#{emoji.codePointAt(0)}</td>
</tr>
</tbody>
</table>
<style>
th, td {
padding: 0.5em;
}
td:nth-child(3),
td:nth-child(4) {
font-family: monospace;
}
</style>