Javascript (ES6) 中的“...”是什么意思? [复制]

2023-11-24

我正在学习 Redux、React 和 ES6。我已经使用 JS 进行了开发,但是 ES6 的这个新世界让我感到惊讶,它有很多新的东西,比如“=>”来声明箭头函数等。然而,在这项新的 Redux 研究中,我面临着...在我的代码中间。

下面我有一个例子:

import { combineReducers, createStore } from 'redux'

const userReducer = (state={}, action) => {
    switch(action.type) {
        case 'CHANGE_NAME':
            state = {...state, name: action.payload};
            break;
        case 'CHANGE_AGE':
            state = {...state, age: action.payload};
            break;
    }
    return state;
};

const tweetsReducer = (state=[], action) => {
    return state;
};

const reducers = combineReducers ({
    user: userReducer,
    tweetsReducer: tweetsReducer,
});


const store = createStore(reducers);

store.subscribe(() =>
    console.log('The chage was: ', store.getState())
);

store.dispatch({type: 'CHANGE_NAME', payload: 'Will'})
store.dispatch({type: 'CHANGE_AGE', payload: 21});

如果我更换
state = {...state, name: action.payload}; and
state = {...state, age: action.payload};
with
state.name = action.payload; and
state.age = action.payload;
它有效,但是年龄与名称一起插入到对象中,并且在第一种情况下插入了名称,然后插入了年龄。

为什么会发生这种情况?我该如何使用...在我未来的代码中?仅仅与州有关吗?


这就是所谓的扩展运算符.

它将一个对象或数组中的值解压到另一个对象或数组中。例如,使用数组:

a1  = [1, 2, 3]
a2  = [4, 5, 6]
a12 = [...a1, ...a2] // [1, 2, 3, 4, 5, 6]

相同的语义适用于对象:

o1  = { foo: 'bar' }
o2  = { bar: 'baz' }
o12 = { ...o1, ...o2 } // { foo: 'bar', bar: 'baz' }

您可以使用它来浅复制对象和数组:

a = [1, 2, 3]
aCopy = [...a] // [1, 2, 3], on a new array

o = { foo: 'bar' }
oCopy = { ...o } // { foo: 'bar' }, on a new object

查看Mozilla 文档,所有 javascript 的优秀资源。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Javascript (ES6) 中的“...”是什么意思? [复制] 的相关文章

随机推荐

  • 使用正则表达式验证 url [重复]

    这个问题在这里已经有答案了 我已经尝试了所有可能的方法来使用正则表达式进行 url 验证 但我没有得到任何 我需要的是网址可以是这样的 google com http google com https google com http www
  • 使用 Spring Boot 进行客户端证书身份验证

    我需要导入证书才能向 Spring Boot 应用程序中的外部服务发出 http 请求 我如何设置 Spring Boot 才能做到这一点 那里有很多信息 但我发现它们有点令人困惑 似乎我可能只需要创建类似 truststore jks 密
  • 如何获取树结构中节点的所有子节点? SQL查询?

    表 用户 列 用户 ID 姓名 经理 ID rows 1 nilesh 0 2 nikhil 1 3 nitin 2 4 Ruchi 2 如果我提供用户 ID 它应该列出所有向他报告的人员 如果我给 userId 2 它应该返回 3 4 这
  • GCC - 仅在特定函数上启用编译器标志

    在我正在从事的一个项目中 我正在尝试优化的大文件中有一个四重嵌套的 for 循环 我认为这会受益于使用 funroll all loops 展开的编译器 但是 当我将此标志添加到编译器时 它会展开文件其余部分的其他循环 并使整个程序运行得更
  • 如何查看节点安装的软件包版本?

    我正在调整 Apache 食谱以与 2 4 Apache 一起使用 Opscode Cookbook 目前失败 因为它正在生成带有 LockFile 关键字的 conf 文件 该关键字被排除在 Apache 2 4 关键字列表之外 我想制定
  • 哪些 C# 类型名称很特殊?

    在什么输入下是特殊名称返回真 根据我的简短研究 我发现属性访问器和运算符重载具有特殊名称 以及名称中包含下划线的任何类型 谁能给我完整描述类型名称特殊的情况 ECMA 335 中发布的 CLI 规范是此类信息的不错来源 在文档中搜索rtsp
  • 更改现有 Xcode 项目的 Git 存储库

    我从 Github 克隆了一个废弃的存储库 现在我希望能够将我的更改上传到私有存储库 以便其他人可以与我一起处理这些更改 不幸的是 由于我克隆了它而不是创建分支 所以 Xcode 正在尝试提交原始存储库 有没有办法更改提交的存储库 如果有
  • Swift 弱引用比强引用慢得多

    我正在用 Swift 构建一个物理引擎 在对引擎进行了一些最近的添加并运行基准测试后 我注意到性能大幅下降 例如 在下面的屏幕截图中 您可以看到 FPS 如何从 60 FPS 下降到 3 FPS FPS 位于右下角 最终 我将问题追溯到一行
  • C# Windows 窗体应用程序 - 从另一个线程和类更新 GUI?

    我进行了大量搜索 但似乎找不到与我的具体问题相关的任何内容 我希望能够从另一个类 SocketListener 更新我的 MainUI 表单 并且在其中我有一个处理网络的线程 clientThread 现在 我可以从网络线程运行简单的输出
  • Magento 中独立的读写数据库

    我在网上找不到任何关于如何为 Magento 配置两个独立数据库的示例 一个用于读取请求 一个用于写入请求 我认为这应该发生在 app etc local xml 中 但我不知道语法是什么 有人知道语法或者有博客文章的链接或者我的搜索没有找
  • 将大量 CSV 文件上传到 SQL Server 数据库

    我需要将大量 16GB 超过 65 万条记录 CSV 文件上传到 SQL Server 2005 数据库中的单个表 有人对执行此操作的最佳方法有任何指示吗 Details 我目前正在使用 C 控制台应用程序 NET Framework 2
  • 在 Google 路线上添加 InfoWindow

    我正在尝试向路线添加信息窗口 有很多在标记上的事件侦听器上添加 InfoWindow 的示例 但是我如何移动信息窗口以显示从一个标记到另一个标记的实际计划路线 之前已经有人尝试问过这个问题但没有回应 路线信息窗口 不管怎样 我做了很多谷歌搜
  • 设置 Team Foundation Server 2010 的用户权限

    我们已经成功安装了TFS 2010 但不知道如何设置用户权限 我们是小型项目 有五个开发人员 一名经理和一名秘书 每个开发者都自己负责一个或多个项目 我们与任何项目之间没有合作 我们希望每个人都能看到每个项目的所有代码 但只有那些负责代码的
  • Windows 中是否有相当于 linux 命令“perf stat”的命令?

    Windows 中是否有相当于 linux 命令 perf stat 的命令 例如查看前端停顿 缓存未命中和其他性能计数器数据 perf是仅限 Linux 的分析器 能够访问硬件事件计数器 缓存未命中 CPU 停顿等 该分析器支持许多 CP
  • SQLAlchemy 一个映射类中的多个外键到同一主键

    我正在尝试设置一个 postgresql 表 该表有两个外键指向另一个表中的相同主键 当我运行脚本时出现错误 sqlalchemy exc AmbigouslyForeignKeysError 无法确定关系 Company stakehol
  • Chrome 中未捕获的 ReferenceError:ActiveXObject 未定义错误

    我在 Chrome 中遇到此错误 未捕获的引用错误 ActiveXObject 未定义 我的代码是 function loadModel document getElementById lModelMsg innerText Loading
  • 如何自定义/样式 codeigniter 错误?

    我正在尝试自定义 CSS HTML 以在 codeigniter 中显示错误消息 这样我就可以为每个标签应用一个标签并设置它们的样式 我尝试用谷歌搜索并搜索手册 但一定是搜索了错误的术语 有人可以帮助我吗 你可以做这样的事情 this gt
  • 在画布标签上绘制箭头

    我想使用canvas标签javascript绘制一个箭头 我已经使用二次函数实现了它 但是我在计算箭头的旋转角度时遇到问题 有人对此有任何线索吗 谢谢 我能得到的就这么简单 您必须自己在前面添加 context beginPath 并附加
  • Python:类似 jQuery 的函数链?

    我在谷歌上找不到任何关于这个主题的信息 所以我想我应该在这里问 是否可以像 jQuery 那样使用 Python 链接函数 my list foo1 arg1 arg2 foo2 arg1 arg2 foo3 arg1 arg2 etc 当
  • Javascript (ES6) 中的“...”是什么意思? [复制]

    这个问题在这里已经有答案了 我正在学习 Redux React 和 ES6 我已经使用 JS 进行了开发 但是 ES6 的这个新世界让我感到惊讶 它有很多新的东西 比如 gt 来声明箭头函数等 然而 在这项新的 Redux 研究中 我面临着