延展操作符(Spread operator)
這個 … 操作符(也被叫做延展操作符 - spread operator)已經(jīng)被 ES6 數(shù)組 支持。它允許傳遞數(shù)組或者類數(shù)組直接做為函數(shù)的參數(shù)而不用通過apply。
var people=['Wayou','John','Sherlock'];
//sayHello函數(shù)本來接收三個單獨的參數(shù)人妖,人二和人三
function sayHello(people1,people2,people3){
console.log(Hello ${people1},${people2},${people3}
);
}
//但是我們將一個數(shù)組以拓展參數(shù)的形式傳遞,它能很好地映射到每個單獨的參數(shù)
sayHello(...people);//輸出:Hello Wayou,John,Sherlock
//而在以前,如果需要傳遞數(shù)組當參數(shù),我們需要使用函數(shù)的apply方法
sayHello.apply(null,people);//輸出:Hello Wayou,John,Sherlock
而在 React 中,延展操作符一般用于屬性的批量賦值上。在JSX中,可以使用…運算符,表示將一個對象的鍵值對與ReactElement的props屬性合并。
var props = {};
props.foo = x;
props.bar = y;
var component = <Component {...props} />;
//等價于
var props = {};
props.foo = x;
props.bar = y;
var component = <Component foo={x} bar={y} />;
它也可以和普通的XML屬性混合使用,需要同名屬性,后者將覆蓋前者:
var props = { foo: 'default' };
var component = <Component {...props} foo={'override'} />;
console.log(component.props.foo); // 'override'