redux には良い middleware が必須
pure な redux におけるほとんど唯一の機能と言っていい reducer の分割だけど、あの思想が全然有効なものだと思えないのは、ぼくだけかな。必要ならその場で簡単に実装できるものだし、基本的に有用ではなくて害ばかりと認識している。
2016-05-24 11:11:38redux の reducer の単位は DDD の aggregate の単位によく似ていると思うのだけど、参照も含めて完全に禁止するあの構造が適切なのか疑問だ。ドメインサービスのようなものを置けないので、容易にアプリケーションサービス相当のミドルウェアに処理が漏れる。
2016-05-24 11:19:51reducer の単位が誤っているのだと言われるかもしれないが、stateの1プロパティではどうしても情報が足りなくてstateの全体から必要な情報をとってactionつくってdispatchするようなことが平気で起こる気がする。ぼくの redux の API の知識不足なのか?
2016-05-24 11:24:36それってミドルウェア前提になるけど、どうなんだって感じだ。あと reducer を分割しないと気にしなくていいものまで気にしないといけなくて、それはそれでおかしい。
2016-05-24 11:26:53reducerをどんな単位で分けようと、connectするときに必要な情報をstate全体から持ってこれるから、それを使ってどんなactionでも作れるよ。 twitter.com/bouzuya/status…
2016-05-24 11:27:30@bouzuya いや、Viewには意識させない。あくまでRedux側のセレクタ関数がstate全体から何を持ってくるか決めていて、Viewコンポーネントは結果をpropsとして受け取って、それを使ってaction作ってdispatchする。
2016-05-24 11:31:00@bouzuya @kuy バカ正直にループに乗っかるとactionのために必要で、ビューに必要のない情報が降りていく状態が発生するケースありますね。それを避けようとすると結局thunkやmidlewareでgetStateしたりsagaでselectしたりになる気がする。
2016-05-24 11:32:43@kuy いや、意識してませんか、それ。なぜその action をつくるのに、その(意識しないと言われている)情報をがいるのか分からないわけですよね。操作のタイミングを伝えるだけで十分なのに、情報を受け渡す役割を負わされませんか?
2016-05-24 11:33:38@bokuweb17 @bouzuya それだ!たしかにそれはaction投げるためにprops渡しちゃってるから良いとはいえないな。
2016-05-24 11:34:31@kuy twitter.com/bokuweb17/stat… これの "actionのために必要で、ビューに必要のない情報が降りていく状態が発生するケース" ←これ
2016-05-24 11:34:56@bouzuya いや、そのとおりですm(__)m @bokuweb17 さんも言ってますが、あまりそういうことをView内でやることはないです。避けるために他に逃がしてますね。
2016-05-24 11:35:39@kuy @bouzuya その辺の解決がまだわかってないです。正直にするとviewに不要な情報がviewを経由するケースがあるんだけど。getSateするのも、折角redux使っているのに、これやっていいの?感があって、ベストプラクティス分かってない・・
2016-05-24 11:36:29@bouzuya @kuy これっていい方法あるんですかね?個人的にはsagaに集約してselectを節度をもって使うくらいしか思いつかないんですが・・。
2016-05-24 11:37:49@bokuweb17 @bouzuya 極力Viewからはイベントを最低限必要な情報と一緒にactionとして投げてもらって、middlewareなりsagaなりで情報を補完して実際の処理を行うって感じにしてます。
2016-05-24 11:38:32@bokuweb17 @kuy ぼくは middleware 前提にするのが正しいと思っています。そのために reducer 分割をやめるというのはありえないので。で、それって redux は必要十分になってんの?ってのがぼくの不満です。
2016-05-24 11:38:48@bokuweb17 @kuy 変更に必要な情報はすべて action から与えられる←正しい。じゃあ aciton をつくるのに必要な情報を常に持ちまわるべき←正しくない……たぶん。でも、pure な redux だとできなくない←おかしくね? ↑ぼくの意見。
2016-05-24 11:40:53@bouzuya @kuy わかる。「aciton をつくるのに必要な情報を常に持ちまわるべき」正しくないんだけど、いい方法が明示されていなくて、結果規模が大きくなるとデカイデータがループをぐるぐるブン回るという事象が発生する
2016-05-24 11:43:08@bokuweb17 @bouzuya たしかに正攻法がわかりにくいのはある。middleware含めてreduxって感じなので、Viewには描画に必要な情報以外は持たない、というのを基本として作っていくと不幸にはならない気がする。
2016-05-24 11:45:56