mirror of https://github.com/sveltejs/svelte
parent
6d364aaade
commit
3da243f5ab
@ -0,0 +1,21 @@
|
||||
import { test } from '../../test';
|
||||
|
||||
export default test({
|
||||
html: `
|
||||
<p>clicks: 0, doubled: 0, tripled: 0, quadrupled: 0, something else: 0</p>
|
||||
<button>click me</button>
|
||||
`,
|
||||
|
||||
async test({ assert, target }) {
|
||||
const btn = target.querySelector('button');
|
||||
|
||||
await btn?.click();
|
||||
assert.htmlEqual(
|
||||
target.innerHTML,
|
||||
`
|
||||
<p>clicks: 1, doubled: 2, tripled: 3, quadrupled: 4, something else: 5</p>
|
||||
<button>click me</button>
|
||||
`
|
||||
);
|
||||
}
|
||||
});
|
||||
@ -0,0 +1,38 @@
|
||||
<script lang="ts">
|
||||
function box(v) {
|
||||
let state = $state(v)
|
||||
return {
|
||||
get value() {
|
||||
return state;
|
||||
},
|
||||
set value(v) {
|
||||
state = v;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function derivedBox(v, multiplier) {
|
||||
let state = $derived(v.value * multiplier);
|
||||
return {
|
||||
get value() {
|
||||
return state;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let count = box(0);
|
||||
let doubled = derivedBox(count, 2);
|
||||
let tripled = derivedBox(count, 3);
|
||||
let quadrupled = derivedBox(count, 4);
|
||||
let whatever_comes_after_that = derivedBox(count, 5);
|
||||
</script>
|
||||
|
||||
{#snippet foo(n: number, ...[doubled, { tripled }, ...rest]: number[])}
|
||||
<p>clicks: {n.value}, doubled: {doubled.value}, tripled: {tripled.value}, quadrupled: {rest[0].value}, something else: {rest[1].value}</p>
|
||||
{/snippet}
|
||||
|
||||
{@render foo(...[count, doubled, {tripled}, quadrupled, whatever_comes_after_that])}
|
||||
|
||||
<button on:click={() => count.value += 1}>
|
||||
click me
|
||||
</button>
|
||||
Loading…
Reference in new issue