Может кто-нибудь объяснить мне этот синтаксис es6? - PullRequest
0 голосов
/ 24 августа 2018

Может ли кто-нибудь объяснить следующее утверждение?

  return state.map(todo =>
    (todo.id === action.id)
      ? {...todo, completed: !todo.completed}
      : todo
  )

Точнее, эта строка

{... todo, завершено:! Todo.completed}

Почему в истинной части троичной операции есть два аргумента?

Что такое?

...

Ответы [ 2 ]

0 голосов
/ 24 августа 2018

...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

0 голосов
/ 24 августа 2018
{
  ...todo,
  completed: !todo.completed
}

просто делает копию todo, но с новым свойством completed. В этом случае это эквивалентно обратному свойству todo. Это простой объект JS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...