Оба с svelte-apollo
(https://github.com/timhall/svelte-apollo/issues/19) и @urql-svelte
(https://github.com/FormidableLabs/urql/issues/704) У меня весь список перерисовывается вместо одного элемента -рендеринг.
Этапы воспроизведения:
Если я прочел здесь: https://svelte.dev/tutorial/svelte-options, я понимаю, что используя:
immutable = {true} - вы никогда не используете изменяемые данные, поэтому компилятор может выполнять простые проверки ссылочного равенства, чтобы определить, изменились ли значения
immutable = {false} - по умолчанию. Svelte будет более консервативен в отношении того, изменились ли изменяемые объекты
Если вы видите пример, они изменяют массив todos
, как мы делаем с urql
:
let todos = [
{ id: 1, done: true, text: 'wash the car' },
{ id: 2, done: false, text: 'take the dog for a walk' },
{ id: 3, done: false, text: 'mow the lawn' }
];
function toggle(toggled) {
todos = todos.map(todo => {
if (todo === toggled) {
// return a new object
return {
id: todo.id,
text: todo.text,
done: !todo.done
};
}
// return the same object
return todo;
});
}
Почему это не работает с моим примером REPL todos
?
Является ли todos
новым массивом в конце?