@@ -195,26 +195,54 @@ _Middleware_ という仕組み自体は[Connect](../connect/README.md)と似て
195
195
しかし、 _ Middleware_ が直接的に結果(State)を直接書き換える事はできません。
196
196
197
197
Connectの _ Middleware_ は最終的な結果(` response ` )を書き換えできます。
198
- 一方、Reduxの _ Middleware_ は扱える範囲が` dispatch ` からReducerまでと線引されている違いと言えます 。
198
+ 一方、Reduxの _ Middleware_ は扱える範囲が「 ` dispatch ` からReducerまで」と線引されている違いと言えます 。
199
199
200
200
## どういう事に向いてる?
201
201
202
- - アスペクト的に前後に処理を挟むことができる
203
- - ログへの利用
204
- - 値自体は直接操作できない
205
- - 受取るデータは変換できる
202
+ Reduxの _ Middleware_ そのものも三原則に基づいた仕組みとなっています。
203
+ _ Middleware_ はActionオブジェクトを自由に書き換えたり、Actionを無視したりできます。
204
+ 一方、Stateを直接は書き換える事ができません。
205
+
206
+ 多くのプラグインの仕組みでは、プラグインに特権的な機能を与えている事が多いですが、
207
+ Reduxの _ Middleware_ は書き込みのような特権的な要素も制限されています。
208
+
209
+ _ Middleware_ に与えられている特権的なAPIとしては、` getState() ` と ` dispatch() ` ですが、
210
+ どちらも書き込みをするようなAPIではありません。
211
+
212
+ このように、プラグインに対して一定の権限を持つAPIを与えつつ、
213
+ 原則を壊すような特権を与えない事を目的としている場合に向いています。
206
214
207
215
## どういう事に向いていない?
208
216
209
- - [ ] TODO
210
- - 変換の仕組み上、書き換え等を行うプラグインを扱いにくい
217
+ 一方、プラグインにも書き込み権限を与えないためには、
218
+ プラグイン間でやり取りする中間的なデータが必要になります。
219
+
220
+ ReduxではActionオブジェクトというような命令(コマンド)を表現したオブジェクトに対して、
221
+ Reducerという命令を元に新しいStateを作り出す仕組みを設けていました。
222
+
223
+ つまり、プラグインそのものだけで全ての処理が完結するわけではありません。
224
+ プラグインで処理した結果を受け取り、その結果を処理する実装も同時に必要となっています。
225
+ Reduxでは _ Middleware_ を前提とした処理を実装として書くことも多いです。
226
+
227
+ そういう意味ではプラグインと実装が密接といえるかもしれません。
228
+
229
+ そのため、プラグインのみで全処理が完結するような機能を作る仕組みは向いていません。
230
+
231
+ ## まとめ
211
232
212
- ## この仕組みを使っているもの
233
+ ここでは [ Redux ] [ ] のプラグインアーキテクチャについて学びました。
213
234
214
- - Connectに似ている
215
- - _ Middleware_もStateそのものを直接書き換える事はできません
216
- - この部分が類似の仕組みを持つ[ connect] ( ../connect/README.md ) との違いになっています
235
+ - Reduxの _ Middleware_ はActionオブジェクトに対する処理を書ける
236
+ - _ Middleware_ に対しても三原則が適応されている
237
+ - _ Middleware_ に対しても扱える機能の制限を適応しやすい
238
+ - _ Middleware_ のみで全ての処理が完結するわけではない
217
239
240
+ ## 参考
218
241
242
+ - [ Middleware | Redux] ( http://redux.js.org/docs/advanced/Middleware.html )
243
+ - [ 10. Middleware · happypoulp/redux-tutorial Uncyclo] ( https://github.com/happypoulp/redux-tutorial/wiki/10.-Middleware )
244
+ - [ Brian Troncone – Redux Middleware: Behind the Scenes] ( http://briantroncone.com/?p=529 )
245
+ - [ ReduxのMiddlewareについて理解したいマン | moxt] ( https://hogehuga.com/post-1123/ )
246
+ - [ Understanding Redux Middleware — Medium] ( https://medium.com/@meagle/understanding-87566abcfb7a#.8fr4jmjwz )
219
247
220
248
[ Redux ] : https://github.com/reactjs/redux " reactjs/redux: Predictable state container for JavaScript apps "
0 commit comments