...todo
- это синтаксис распространения, означающий, что свойство completed: !todo.completed
будет добавлено к существующему объекту todo вместе с предыдущими свойствами.Используя его, вам не нужно вручную копировать существующие свойства.
Рассматривать его как , расширяющий объект 'todo'.
Также (todo.id === action.id)
проверяет, является лиid
одинаков для обоих объектов, а затем добавляется свойство completed: !todo.completed
, в котором сохраняется старый объект как есть.
Пожалуйста, ознакомьтесь с этим справочным руководством:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax