Угловой, что означает три точки в @NGRX
что означает именно эти три точки и почему они мне нужны ?
export function leadReducer(state: Lead[]= [], action: Action {
switch(action.type){
case ADD_LEAD:
return [...state, action.payload];
case REMOVE_LEAD:
return state.filter(lead => lead.id !== action.payload.id )
}
}
2 ответов
три точки известны как распространение оператор из машинописного текста (также из ES7).
оператор spread возвращает все элементы массива. Как будто вы напишете каждый элемент отдельно:
let myArr = [1, 2, 3];
return [1, 2, 3];
//is the same as:
return [...myArr];
это в основном просто синтаксический сахар, как он компилирует это:
func(...args);
для этого:
func.apply(null, args);
в вашем случае это компилируется так:
return [...state, action.payload];
//gets compiled to this:
return state.concat([action.payload]);
на ...
(распространение оператор) работает, возвращая каждое значение из index 0
индекс length-1
: