質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

解決済

2回答

888閲覧

react {...props}

cheche0830

総合スコア187

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2018/01/25 07:27

reactで

{...props}

という記述が出てきますがこれはどういう意味でしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答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

miyabi-sun

総合スコア21158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cheche0830

2018/01/25 07:47

あ、reactの記述ではなくjsの記述方法だったのですね!ありがとうございました!!
guest

0

https://reactjs.org/docs/jsx-in-depth.html#spread-attributes
Spread Attributesと呼ばれるものです。平たく言うと「オブジェクト」をタグのアトリビュートの部分に展開する文法です。

よく見ると、それ以外にも「オブジェクトからプロパティを抜き出すときに、余りの部分を受け取る」文法でもあるようです。

投稿2018/01/25 07:37

編集2018/01/25 07:39
masaya_ohashi

総合スコア9206

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cheche0830

2018/01/25 07:41

ありがとうございます。省略した書き方ってことですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問