什么是展开运算符?
此语法用于简洁地将多个值从 Array 或 Object 传递到需要元素的表达式。示例是展示这一点的最佳方式。
数组
组合数组
let arr1 = [1, 2, 3];
let arr2 = [4, 5, 6];
let combinedArr = [...arr1, ...arr2];
// combinedArr = [1, 2, 3, 4, 5, 6]
let arr1 = [1, 2, 3];
let arr2 = [4, ...arr1, 5, 6];
// arr2 = [4, 1, 2, 3, 5, 6]
复制数组
let arr = [1, 2, 3];
let arrCopy = [...arr];
// arrCoppy = [1, 2, 3]
// changing arr will not effect arrCopy
对象
合并对象
let obj1 = { id: 1, name: 'Aden' };
let obj2 = { birthday: '2022-02-04', hairColor: 'Brown' };
let combinedObj = { ...obj1, ...obj2 };
// combinedObj = { id: 1, name: 'Aden', birthday: '2022-02-04', hairColor: 'Brown' }
注意:合并具有相似属性的对象可能不会像您期望的那样运行
let obj1 = { id: 1, name: 'Aden' };
let obj2 = { id: 2, name: 'Bob' };
let combinedObj = { ...obj1, ...obj2 };
// combinedObj = { id: 2, name: 'Bob' }
React 中的一个常见用例
import { useState } from "react";
const App = () => {
const [input, setInput] = useState("");
const [list, setList] = useState([]);
const addButtonClick = () => {
// We use the spread operator to add
// an item to the end of the array
setList((list) => [...list, input]);
};
return (
<div>
<input
type="text"
value={input}
onChange={(e) => {
setInput(e.target.value);
}}
/>
<button onClick={addButtonClick}>Add</button>
<ul>
{list.map((item) => {
return <li key={Math.random()}>{item}</li>;
})}
</ul>
</div>
);
};
export default App;