JavaScript

javascript ...の基本的な使い方

More than 1 year has passed since last update.

参考 
http://yami-beta.hateblo.jp/entry/2016/09/06/112330

reactでは以下のような...の記法を見かけます。

render() {
  return <Counter {...this.state} />
}

これはSpread AttributesというJSXの記法

子の Component へ props を渡す場合,Spread Attributes を用いると,以下のように書き換えられます.

1つずつ渡す場合

const props = { foo: "foo", bar: "bar" };
render() {
  return <Child foo={props.foo} bar={props.bar} />
}

Spread Attributes を用いて渡す場合

const props = { foo: "foo", bar: "bar" };
render() {
  return <Child {...props} />
}

ES.next でのスプレッド演算子
「...」(ドット3つ)の記法は,スプレッド演算子として ES2015 で Array に導入されています.

let ary1 = ["first", "second"];
let ary2 = [...ary1, "third"]; // ["first", "second", "third"]

ES.next では,「...」(ドット3つ)の記法を,Object で使える Object Rest/Spread Properties が提案されています.

let obj1 = { x: 1, y: 2 };
let obj2 = { ...obj1, z: 3 }; // { x: 1, y: 2, z: 3 }

これを用いると,以下のような Object.assign() を用いていたコードが簡潔に書けるようになります.

let obj1 = { x: 1, y: 2 };
let obj2 = Object.assign({}, obj1, { z: 3 });