React での「...」(ドット3つ)の記法
React では以下のような「...」(ドット3つ)の記法を時々見かけます.
render() { return <Counter {...this.state} /> }
Spread Attributes
これは,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 });
babel で用いる場合は,Stage 2 preset か Object rest spread transform を用いてください.