teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

わからない部分に対しての追記と、参考コードを追加しました。

2018/07/07 05:42

投稿

u310ai
u310ai

スコア10

title CHANGED
File without changes
body CHANGED
@@ -1,7 +1,10 @@
1
1
  applyMiddlewareのコードを見たのですが、わからないところがあります。
2
2
  new Errorが入ったdispatchをmiddlewareAPIに入れて個々のミドルウェアに渡しているのですが、
3
3
  例えばthunkなどはアクションにstore.dispatchを渡して、アクション内で実行させたりしていますが、
4
+ どうしてstore.dispatchが働くのかがわかりません。
5
+ どこでアクション関数内で働くdispatchにstore.dispatchに入れているのでしょうか?
6
+
4
- どうしてエラーにらなのでしょう
7
+ 基本的認識が間違ってもしれませんが、
5
8
  よろしくお願いします。
6
9
 
7
10
  applyMiddleware.js
@@ -29,4 +32,24 @@
29
32
  }
30
33
  }
31
34
  }
35
+ ```
36
+
37
+ redux-thunk
38
+ ```javascript
39
+ function createThunkMiddleware(extraArgument) {
40
+ // ここのdispatchはmiddlewareAPIから渡ってきたdispatchだと思いますが、
41
+ // エラーが入ってたと思うのですがちゃんと働きます。
42
+ return ({ dispatch, getState }) => next => action => {
43
+ if (typeof action === 'function') {
44
+ return action(dispatch, getState, extraArgument);
45
+ }
46
+
47
+ return next(action);
48
+ };
49
+ }
50
+
51
+ const thunk = createThunkMiddleware();
52
+ thunk.withExtraArgument = createThunkMiddleware;
53
+
54
+ export default thunk;
32
55
  ```