Как правильно активировать реактивность в svelte, когда я обновляю свойство объекта внутри массива, который затем передается как свойство компонента?
let items = [{
id: 1,
name: 'first'
}, {
id: 2,
name: 'second'
}];
function findItem(id) {
return items.find(item => item.id == id);
}
function modifyItem(id, changedProps) {
let item = findItem(id);
if(item) {
Object.assign(item, changedProps);
items = [...items]; // this does nothing
console.log(items); // correctly displays the modified items array
}
}
// ...
<MyList {items}/>
Итак, я передаю свой modifyItem
функция. Затем дочерний компонент вызывает его и хочет обновить массив items
. Это работает просто отлично, но реактивность не срабатывает (я полагаю, что svelte не распознает, что объект в массиве был изменен), поэтому MyList
никогда не перерисовывается.
Что такое "правильно" "/" правильный "способ сделать это? Кажется немного неэффективным .map
весь массив только для того, чтобы создать новый экземпляр объекта и добавить в него sh. Любой другой способ? Большое спасибо!