我创建了一个REPL来说明我的问题. 所以我有一个带有元素的数组,这些元素将这些属性绑定到输入文件. 但改变这些价值观无济于事.在记录或添加时,所有更改都会丢失.
提前谢谢你
我试着给物品添加身份props
我创建了一个REPL来说明我的问题. 所以我有一个带有元素的数组,这些元素将这些属性绑定到输入文件. 但改变这些价值观无济于事.在记录或添加时,所有更改都会丢失.
提前谢谢你
我试着给物品添加身份props
您需要传递引用数据类型(array
或object
)--这里是arrayItem
,才能进行更新,因为更新总是指向内存中的同一引用.
在您的示例中,您正在传递基本类型(number
和string
)-这里是x
和y
,它们在创建时具有新的内存位置,因此更新不会在所有位置上完成!
项目
<script>
export let arrayItem;
</script>
<div>
<input bind:value={arrayItem.x}>
<input bind:value={arrayItem.y}>
</div>
亲本
<script>
import Item from "./Item.svelte"
let array = [
{
x: 1,
y: 2
}
];
function handleAdd() {
array = [...array, { x: 0, y: 0 }];
}
function handleLog() {
console.log(array);
}
</script>
<div>
{#each array as arrayItem}
<Item {arrayItem} />
{/each}
<button on:click={handleAdd}>add element to array</button>
<button on:click={handleLog}>log array</button>
</div>