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