mirror of https://github.com/sveltejs/svelte
fix: ensure proxy is updated before notifying listeners (#10267)
fixes #10264 fixes #10265pull/10270/head
parent
036e88f1f7
commit
14bf4b4b2c
@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"svelte": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
fix: ensure proxy is updated before notifying listeners
|
@ -0,0 +1,33 @@
|
|||||||
|
import { test } from '../../test';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @type {any[]}
|
||||||
|
*/
|
||||||
|
let log;
|
||||||
|
/**
|
||||||
|
* @type {typeof console.log}}
|
||||||
|
*/
|
||||||
|
let original_log;
|
||||||
|
|
||||||
|
export default test({
|
||||||
|
compileOptions: {
|
||||||
|
dev: true
|
||||||
|
},
|
||||||
|
before_test() {
|
||||||
|
log = [];
|
||||||
|
original_log = console.log;
|
||||||
|
console.log = (...v) => {
|
||||||
|
log.push(...v);
|
||||||
|
};
|
||||||
|
},
|
||||||
|
after_test() {
|
||||||
|
console.log = original_log;
|
||||||
|
},
|
||||||
|
async test({ assert, target }) {
|
||||||
|
const [btn] = target.querySelectorAll('button');
|
||||||
|
btn.click();
|
||||||
|
await Promise.resolve();
|
||||||
|
|
||||||
|
assert.deepEqual(log, ['init', {}, 'init', [], 'update', { x: 'hello' }, 'update', ['hello']]);
|
||||||
|
}
|
||||||
|
});
|
@ -0,0 +1,15 @@
|
|||||||
|
<script>
|
||||||
|
let obj = $state({});
|
||||||
|
let array = $state([]);
|
||||||
|
|
||||||
|
$inspect(obj);
|
||||||
|
$inspect(array);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<button
|
||||||
|
onclick={() => {
|
||||||
|
obj.x = "hello";
|
||||||
|
array[0] = "hello";
|
||||||
|
}}>
|
||||||
|
add prop
|
||||||
|
</button>
|
Loading…
Reference in new issue