mirror of https://github.com/sveltejs/svelte
fix: update value like attributes in a separate template_effect (#11720)
* fix: update value like attributes in a separate template_effect * chore: remove unnecessary commented code * chore: add test for spread valuespull/11726/head
parent
c21f019a4b
commit
77f91459b6
@ -0,0 +1,5 @@
|
||||
---
|
||||
"svelte": patch
|
||||
---
|
||||
|
||||
fix: update value like attributes in a separate template_effect
|
@ -0,0 +1,34 @@
|
||||
import { test, ok } from '../../test';
|
||||
import { flushSync } from 'svelte';
|
||||
|
||||
export default test({
|
||||
mode: ['client'],
|
||||
|
||||
async test({ assert, target }) {
|
||||
/**
|
||||
* @type {HTMLInputElement | null}
|
||||
*/
|
||||
const input = target.querySelector('input[type=text]');
|
||||
const button = target.querySelector('button');
|
||||
/**
|
||||
* @type {HTMLInputElement | null}
|
||||
*/
|
||||
const checkbox = target.querySelector('input[type=checkbox]');
|
||||
const textarea = target.querySelector('textarea');
|
||||
ok(input);
|
||||
ok(button);
|
||||
ok(checkbox);
|
||||
ok(textarea);
|
||||
|
||||
flushSync(() => {
|
||||
input.value = 'foo';
|
||||
checkbox.click();
|
||||
textarea.innerHTML = 'bar';
|
||||
button.click();
|
||||
});
|
||||
|
||||
assert.equal(input.value, 'foo');
|
||||
assert.equal(checkbox.checked, true);
|
||||
assert.equal(textarea.innerHTML, 'bar');
|
||||
}
|
||||
});
|
@ -0,0 +1,13 @@
|
||||
<script>
|
||||
let count = 0;
|
||||
let value = { value: "" };
|
||||
let checked = { value: false };
|
||||
</script>
|
||||
|
||||
<input type="text" value={value.value} />
|
||||
|
||||
<textarea value={value.value}></textarea>
|
||||
|
||||
<input type="checkbox" checked={checked.value} />
|
||||
|
||||
<button on:click={()=>count++}>{count}</button>
|
@ -0,0 +1,34 @@
|
||||
import { test, ok } from '../../test';
|
||||
import { flushSync } from 'svelte';
|
||||
|
||||
export default test({
|
||||
mode: ['client'],
|
||||
|
||||
async test({ assert, target }) {
|
||||
/**
|
||||
* @type {HTMLInputElement | null}
|
||||
*/
|
||||
const input = target.querySelector('input[type=text]');
|
||||
const button = target.querySelector('button');
|
||||
/**
|
||||
* @type {HTMLInputElement | null}
|
||||
*/
|
||||
const checkbox = target.querySelector('input[type=checkbox]');
|
||||
const textarea = target.querySelector('textarea');
|
||||
ok(input);
|
||||
ok(button);
|
||||
ok(checkbox);
|
||||
ok(textarea);
|
||||
|
||||
flushSync(() => {
|
||||
input.value = 'foo';
|
||||
checkbox.click();
|
||||
textarea.innerHTML = 'bar';
|
||||
button.click();
|
||||
});
|
||||
|
||||
assert.equal(input.value, 'foo');
|
||||
assert.equal(checkbox.checked, true);
|
||||
assert.equal(textarea.innerHTML, 'bar');
|
||||
}
|
||||
});
|
@ -0,0 +1,17 @@
|
||||
<script>
|
||||
let count = $state(0);
|
||||
let value = $state({
|
||||
value: "",
|
||||
});
|
||||
let checked = $state({
|
||||
checked: false,
|
||||
});
|
||||
</script>
|
||||
|
||||
<input type="text" {...value} />
|
||||
|
||||
<textarea {...value}></textarea>
|
||||
|
||||
<input type="checkbox" {...checked} />
|
||||
|
||||
<button onclick={()=>count++}>{count}</button>
|
@ -0,0 +1,34 @@
|
||||
import { test, ok } from '../../test';
|
||||
import { flushSync } from 'svelte';
|
||||
|
||||
export default test({
|
||||
mode: ['client'],
|
||||
|
||||
async test({ assert, target }) {
|
||||
/**
|
||||
* @type {HTMLInputElement | null}
|
||||
*/
|
||||
const input = target.querySelector('input[type=text]');
|
||||
const button = target.querySelector('button');
|
||||
/**
|
||||
* @type {HTMLInputElement | null}
|
||||
*/
|
||||
const checkbox = target.querySelector('input[type=checkbox]');
|
||||
const textarea = target.querySelector('textarea');
|
||||
ok(input);
|
||||
ok(button);
|
||||
ok(checkbox);
|
||||
ok(textarea);
|
||||
|
||||
flushSync(() => {
|
||||
input.value = 'foo';
|
||||
checkbox.click();
|
||||
textarea.innerHTML = 'bar';
|
||||
button.click();
|
||||
});
|
||||
|
||||
assert.equal(input.value, 'foo');
|
||||
assert.equal(checkbox.checked, true);
|
||||
assert.equal(textarea.innerHTML, 'bar');
|
||||
}
|
||||
});
|
@ -0,0 +1,13 @@
|
||||
<script>
|
||||
let count = $state(0);
|
||||
let value = $state("");
|
||||
let checked = $state(false);
|
||||
</script>
|
||||
|
||||
<input type="text" {value} />
|
||||
|
||||
<textarea {value}></textarea>
|
||||
|
||||
<input type="checkbox" {checked} />
|
||||
|
||||
<button onclick={()=>count++}>{count}</button>
|
Loading…
Reference in new issue