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

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

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

Reduxは、JavaScriptアプリケーションの状態を管理するためのオープンソースライブラリです。ReactやAngularで一般的にユーザーインターフェイスの構築に利用されます。

React.js

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

Q&A

解決済

2回答

1545閲覧

React+Reduxを勉強中です。const boundAddTodo = text => dispatch(addTodo(text)) はどういう意味でしょうか?

dongw

総合スコア119

Redux

Reduxは、JavaScriptアプリケーションの状態を管理するためのオープンソースライブラリです。ReactやAngularで一般的にユーザーインターフェイスの構築に利用されます。

React.js

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

0グッド

0クリップ

投稿2017/08/16 09:39

Ruby on RailsにReact+Reduxを導入しようと勉強しています。
http://redux.js.org/docs/basics/Actions.html
reduxの公式を読んでいるのですが、

const boundAddTodo = text => dispatch(addTodo(text))

この記述がどういう意味なのか分かりません。
constで定数?boundAddTodoを定義して textを代入しようとしているまでは分かるのですが
矢印(=>)が出てきてどういう意味なのか分かりませんでした。
教えて頂けるとありがたいです。

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

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

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

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

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

guest

回答2

0

const boundAddTodo = text => dispatch(addTodo(text))

const boundAddTodo = (text) => dispatch(addTodo(text))

const boundAddTodo = (text) => { dispatch(addTodo(text))
}

const boundAddTodo = function(text) { dispatch(addTodo(text))}

↓に特に意味はないですが、いろんな書き方、省略の仕方があります。

投稿2017/08/16 12:13

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

dongw

2017/08/16 12:27

回答ありがとうございます。 矢印はアロー関数?というやつでしょうか? functionが省略され括弧が省略され、中括弧が省略され、分かっていないと難しいものがありますね。
退会済みユーザー

退会済みユーザー

2017/08/16 17:43

アロー関数です。
dongw

2017/08/26 08:26

返信遅れました。 アロー関数なのですね。勉強になりました!ありがとうございます。
guest

0

ベストアンサー

=>を使わない形で書くと、

javascript

1const boundAddTodo = function(text){ return dispatch(addTodo(text)); };

となります。つまり、=>関数の定義となっています。

(なお、functionで書いた場合と異なり、=>で作った関数は、外側のthisを引き継ぐようになっています)

投稿2017/08/16 09:44

maisumakun

総合スコア145184

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

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

dongw

2017/08/16 10:01

回答ありがとうございます。 =>は関数の定義という意味だったのですね。 初歩的な事をお聞きして申し訳ありませんが、 function(text){ return dispatch(addTodo(text)); }; とはどういう形なのでしょうか? 普通はfunction aaa(関数名)(bbb(引数)){ccc(処理)}だと思うのですがこの場合は 関数名が存在しないということでしょうか?関数名が存在しないのに引数textが入っている意味があまり良くわかりません。 もう1点、この場合boundAddTodoに代入されるのは関数自体が代入されるのでしょうか? それとも関数の結果(返り値)でしょうか? 重ね重ね申し訳ありませんが回答いただけたらありがたいです。
maisumakun

2017/08/16 10:27

「無名関数」といって、「変数に入れておいてコールバックとして呼び出すような関数」であれば変数経由で呼び出せばいいので、名前無しで問題ありません(「関数そのもの」を引数にしています)。
dongw

2017/08/16 11:56

なるほど、名前だけは知っていましたがこれが無名関数なのですね。 function(text)となって無名関数に引数があるのも boundAddTodo(text)という形で呼び出すためという認識で合っていますでしょうか?
dongw

2017/08/16 12:51

consoleで今し試してみたらboundAddTodo()で処理は実行されましたが、 boundAddTodo(text)を叩くとtext is not definedになりました。 うーん、となるとこのtextはどういう意味を持つんでしょうか・・・
namimon

2017/08/24 08:28

もともと変数があり、それを boundAddTodoに渡すとfunction内でtextという名前の変数で使うという意味です。
dongw

2017/08/26 08:26

コメントありがとうございます。 const boundAddTodo = text => dispatch(addTodo(text)) という一行は boundAddTodoという変数に無名関数を代入している。 無名関数には引数textがある。 このtextは無名関数内の処理で使うために渡されている。 変数に関数を代入すると、変数の名前で関数を呼び出せる。 つまりboundAddTodo(text)という形で処理を呼び出すことを期待している。 という認識であってますでしょうか?
maisumakun

2017/08/26 08:32

JavaScriptの場合、引数の名前は関数の内側と外側で特に関係ありません。 なので、boundAddTodo(str + str2)として呼び出そうが、一向に構いません。
dongw

2017/08/29 03:10

コメントありがとうございます。 実引数と仮引数ということでしょうか。 ともあれ根本的な疑問点は解決出来ました。ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問