start slots section

pull/2179/head
Rich Harris 7 years ago
parent b2c3eb7ba8
commit 46fc0dec0b

@ -0,0 +1,7 @@
<script>
import Box from './Box.svelte';
</script>
<Box>
<!-- put content here -->
</Box>

@ -0,0 +1,10 @@
<style>
.box {
border: 2px solid black;
padding: 0.5em;
}
</style>
<div class="box">
<!-- content should be injected here -->
</div>

@ -0,0 +1,8 @@
<script>
import Box from './Box.svelte';
</script>
<Box>
<h2>Hello!</h2>
<p>This is a box. It can contain anything.</p>
</Box>

@ -0,0 +1,10 @@
<style>
.box {
border: 2px solid black;
padding: 0.5em;
}
</style>
<div class="box">
<slot></slot>
</div>

@ -0,0 +1,28 @@
---
title: Slots
---
Just like elements can have children...
```html
<div>
<p>I'm a child of the div</p>
</div>
```
...so can components. Before a component can accept children, though, it needs to know where to put them. We do this with the `<slot>` element. Put this inside `Box.svelte`:
```html
<div class="box">
<slot></slot>
</div>
```
You can now put things in the box:
```html
<Box>
<h2>Hello!</h2>
<p>This is a box. It can contain anything.</p>
</Box>
```

@ -0,0 +1,3 @@
{
"title": "Component composition"
}

@ -131,7 +131,7 @@ Maybe lifecycle should go first, since we're using `onMount` in the `this` demo?
## Composition ## Composition
* [ ] `<slot>` * [x] `<slot>`
* [ ] `<slot name="foo">` * [ ] `<slot name="foo">`
* [ ] `<slot bar={baz}>` and `let:bar` * [ ] `<slot bar={baz}>` and `let:bar`

Loading…
Cancel
Save