Я новичок в создании анонимных функций и использовании карты, что означает ...i
в следующих строках кода. тиа
const airlines = this.state.airlines.map(i => (
{ ...i, editing : this.state.editing && i===item }
)
)
Я новичок в создании анонимных функций и использовании карты, что означает ...i
в следующих строках кода. тиа
const airlines = this.state.airlines.map(i => (
{ ...i, editing : this.state.editing && i===item }
)
)
Он известен как синтаксис распространения, а в текущий контекст включает в себя копирование объекта. Это то же самое, что и это:
const airlines = this.state.airlines.map(object => {
object.editing = this.state.editing && object === item;
return object;
});
Итак, мы создаем неглубокую копию объекта и добавляем к нему свойства. Это цель синтаксиса распространения - сделать неглубокую копию или собрать элементы для неглубокой копии (известный как синтаксис отдыха - собирает остальные элементы). Вот упрощенный пример синтаксиса распространения:
const arr = [{
name: "Jack"
}, {
name: "Joe"
}];
const res = arr.map(e => ({ ...e,
age: Infinity
}));
console.log(res);
.as-console-wrapper {
max-height: 100% !important;
top: auto;
}
{ ...{a: 1, b: 2}, c: 3 }
равно{ a: 1, b:2, c:3 }
, а[ ...[1, 2, 3], 4 ]
равно[1, 2, 3, 4]
- person Julian Liu   schedule 03.06.2019map
- person Kaiido   schedule 03.06.2019i
. Связанный вопрос касается наиболее распространенных случаев (объекты и массивы), я сомневаюсь, что OP использует экзотический объект, у которого есть собственный Symbol.iterator. - person Kaiido   schedule 03.06.2019