reactで
{...props}
という記述が出てきますがこれはどういう意味でしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答2件
0
ベストアンサー
JavaScriptの新仕様(ES2015)で追加された書き方ですね。
正式名称はspread (...) operator
です。
http://kangax.github.io/compat-table/es6/
オブジェクト宣言、配列宣言、関数実行…に使えます。
下記のようなケースで威力を発揮します。
JavaScript
1const origin = { 2 foo: 123, 3 bar: 234 4}; 5const copied = {...origin}; 6console.log(copied); 7// {foo: 123, bar: 234} 8 9// barを345の数値にしたいんだけどなぁ… 10const data1 = {...origin, bar: 345}; 11console.log(data1); 12// {foo: 123, bar: 345} <- ちゃんと上書きされてる! 13console.log(origin); 14// {foo: 123, bar: 234} <- 元のデータも維持されてる! 15 16// Object.assignでもほぼ同じ事が出来るよ、 17// でも記述量は増えるし、このメソッドの実装もES2015系だから実践でこちらを採用するケースはあまりないかも 18const data2 = Object.assign({}, origin, {bar: 345}); 19console.log(data2); 20// {foo: 123, bar: 345} <- ちゃんと上書きされてる! 21console.log(origin); 22// {foo: 123, bar: 234} <- 元のデータも維持されてる!
ES5相当で同じ事をしたければ大変です。
オブジェクトや配列は参照になるので、シャローコピーが難しいのです。
JavaScript
1var origin = { 2 foo: 123, 3 bar: 234 4}; 5 6var data = {}; 7for (var key in origin) { 8 data[key] = origin[key]; 9} 10data.bar = 345; 11console.log(data); 12// {foo: 123, bar: 345} <- ちゃんと上書きされてる! 13console.log(origin); 14// {foo: 123, bar: 234} <- 元のデータも維持されてる!
投稿2018/01/25 07:43
総合スコア21412
0
https://reactjs.org/docs/jsx-in-depth.html#spread-attributes
Spread Attributesと呼ばれるものです。平たく言うと「オブジェクト」をタグのアトリビュートの部分に展開する文法です。
よく見ると、それ以外にも「オブジェクトからプロパティを抜き出すときに、余りの部分を受け取る」文法でもあるようです。
投稿2018/01/25 07:37
編集2018/01/25 07:39総合スコア9210
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/25 07:47