...(JavaScript 中的三个点)称为扩展语法或扩展运算符。这允许在任何位置展开诸如 array 表达式或 string 之类的可迭代对象,或者在任何位置展开 object 表达式。这不是 React 特有的。它是一个 JavaScript 运算符。
这里所有这些答案都很有帮助,但我想列出Spread Syntax(扩展运算符)最常用的实际用例。
1.合并数组(连接数组)
有一个variety of ways to combine arrays,但扩展运算符允许您将其放置在数组中的任何位置。如果您想组合两个数组并将元素放置在数组中的任意位置,您可以执行以下操作:
var arr1 = ['two', 'three'];
var arr2 = ['one', ...arr1, 'four', 'five'];
// arr2 = ["one", "two", "three", "four", "five"]
2。复制数组
当我们想要一个数组的副本时,我们曾经有Array.prototypr.slice() 方法。但是,您可以对扩展运算符执行相同的操作。
var arr = [1,2,3];
var arr2 = [...arr];
// arr2 = [1,2,3]
3.不使用 Apply 调用函数
在 ES5 中,要将一个包含两个数字的数组传递给 doStuff() 函数,您经常使用 Function.prototype.apply() 方法,如下所示:
function doStuff (x, y, z) { }
var args = [0, 1, 2];
// Call the function, passing args
doStuff.apply(null, args);
但是,通过使用扩展运算符,您可以将数组传递给函数。
doStuff(...args);
4.解构数组
您可以结合使用解构和其余运算符将信息提取到您想要的变量中:
let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 };
console.log(x); // 1
console.log(y); // 2
console.log(z); // { a: 3, b: 4 }
5.函数参数作为 Rest 参数
ES6 也有三个点 (...),它是一个剩余参数,将函数的所有剩余参数收集到一个数组中。
function f(a, b, ...args) {
console.log(args);
}
f(1,2,3,4,5);
// [ 3, 4, 5 ]
6.使用数学函数
任何使用spread作为参数的函数都可以被可以接受任意数量参数的函数使用。
let numbers = [9, 4, 7, 1];
Math.min(...numbers); // 1
7.组合两个对象
您可以使用扩展运算符来组合两个对象。这是一种简单而干净的方法。
var carType = {
model: 'Toyota',
yom: '1995'
};
var carFuel = 'Petrol';
var carData = {
...carType,
carFuel
}
console.log(carData);
// {
// model: 'Toyota',
// yom: '1995',
// carFuel = 'Petrol'
// }
8.将字符串分隔成单独的字符
您可以使用展开运算符将字符串展开为单独的字符。
let chars = ['A', ...'BC', 'D'];
console.log(chars); // ["A", "B", "C", "D"]
您可以想出更多使用展开运算符的方法。我在这里列出的是它的流行用例。