这三个点到底是什么意思?我为什么需要它们?

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 )
}
}

推荐答案

这三个点被称为来自Typescript 的spread operator(也来自ES7).

扩展运算符返回数组的所有元素.就像您单独编写每个元素一样:

let myArr = [1, 2, 3];
return [1, 2, 3];
//is the same as:
return [...myArr];

这主要是语法上的糖,因为它编译了以下内容:

func(...args);

为此:

func.apply(null, args);

In your case this gets compiled 为此:

return [...state, action.payload];
//gets compiled 为此:
return state.concat([action.payload]);

Angular相关问答推荐

Angular :仅当 Select 第一个日期时才显示第二个日期字段

Angular 客户端应用程序无法从停靠容器解析后端服务的地址

第15角Cookie的单元测试用例

有没有其他代码可以用函数的方式写成Angular ?

AOS中的数据绑定--可能吗?

如何将Angular 服务包含在延迟加载的独立组件路由中?

ANGLE v16独立组件不能与拦截器一起工作?

Angular 组件存储,为什么我的效果可以';在http错误后不会被触发?

无法在 app.component.html 中呈现自定义组件

无法在 Angular 中使用 CryptoJS 正确加密

PrimeNG:如何以编程方式更改分页器中的选定页面?

如何在 Angular 中创建通用的可重用组件

Aws 代码部署在 BeforeBlockTraffic 步骤失败,即使在更新策略后也会超时

Angular url加号转换为空格

当父组件上的变量发生变化时重新加载子组件

如何以Angular 获取嵌套表单组的控件

Angular2:如果 img src 无效,则显示占位符图像

将外部 CSS 加载到组件中

Angular 2 可用的 yeoman 生成器

如何在 Angular Material 中设置图标的 colored颜色 ?