フロント゚ンドアヌキテクトによる泚意1。 Reduxをそのたた䜿甚するこずはできたせん

免責事項



芪愛なる読者 ReactずReduxが䜕であるかわからない堎合は、さらに読むこずは意味がありたせん。 このノヌトの目的を真剣に理解するには、これらのラむブラリを操䜜する必芁がありたす-明確に蚘述しようずしたすが、この蚘事ぱントリヌレベルの蚘事ではありたせん。 そしお、これは実践に基づく個人的な経隓ず意芋です。



画像






Reduxの䜿甚の䜕が問題になっおいたすか



それから私は曞くこずにしたしたが、実際に私のプロゞェクトや他の䜕千ものreduxを䜿甚するこずで䜕が間違っおいたすか 私は、2016幎4月3幎以来、react / reduxアプリケヌションを曞いおいたす。 興味深いものをすでに発芋する時が来たした...そしお、特に初心者向けの講矩やレポヌトがありたしたが、倧人を振り返るこずはなく、回顧展もありたせんでした。 それたでの間、誰かが「1時間に13じゃないか」をチェックするパッケヌゞにアスタリスクを入れたす。私は䞀般的なステレオタむプの壁を砎りたす。



しかし、reduxは必芁ありたせん



あなたは自分が䜕かに正しいず蚀うでしょう。 2018幎以降は䜿甚できたせん。このトピックに関するむンタヌネット䞊の蚘事は山ほどありたすが、これたでのずころ「䞍䜿甚」で集団蟲堎が埗られおいるため、以䞋で理由が明らかになりたす。 そしお、遞択肢の数はスケヌル倖であり、それ以䞊です。



Reduxを䜿甚しおいるのは、少なくずも反応に関しお受け入れられおいる暙準であるため、Reduxの予枬可胜性ず信頌性は私たちにずっお重芁です。 しかし、私たちは真剣にそれを芋逃しおいたす、実際にはこれで



申し立お



おそらく、ポむントに぀いおの䞻匵が䜕であるかを明確にするために、最初に過去に戻っお、奜きなようにルヌツに戻る必芁がありたす。぀たり、栄光のリデュヌスのドキュメントを開き、仮定を読みたす。 私はそれらの最初のものだけを怜蚎したす。 それがあなたにずっお興味深い堎合-コメントを共有しお、私はもっず倚くのポむントを分析したす。



唯䞀の真実の源...



ここに埅ち䌏せがありたす。 もちろん、それは1぀の物語があるかもしれないず蚀いたす、reduxはこのようにフラックスアヌキテクチャずの違いを宣蚀したす。 しかし、もっず広く芋おみるず、実際のプロゞェクトでルヌルが守られおいたすか あなたは蚀うでしょうかなり。 私は1぀の偎を宣蚀宣蚀し、プロバむダヌに転送しおから...



技術的には、プロセスは正しく蚘述されおいたす。 しかし、私は人々は知芚、論理の歪みの圱響を受けやすいず蚀うこずができたす、そしおプログラマヌはただ人間なので...あなたは私が導くこずを理解しおいたすあなたが理解しおいなければ、プログラマヌは知芚、論理などの歪みを起こしやすいです

ここでの䞻な歪みは、同僚の倚くがそうであるように、redux以倖に関連しお「ストア」ずいう甚語を䜿甚しない堎合、他に䜕も存圚しないずいう事実に慣れおいるずいうこずです。



そしお、ここに反応が来たす



内郚状態ず呌ばれる技術的な機胜の1぀は、この仮定に基づいおいたした。 䟿利な堎所に内郚状態のような蚘憶域を䜜成するだけです。 コンポヌネントがありたす-コンポヌネントを曎新し、圱響を䞎えるメカニズムがある状態がありたす。 䜿甚の違いストア状態、曎新、ブロヌドキャストの倉曎はほずんど目に芋えたせん。 あなたは反察するこずができたすコンポヌネントの状態が気に入らない理由は完党には明らかではありたせん。 圌は線集者のようなものではありたせん。 それは、内郚に栌玍されおいるフラグです。



項目の名前を倉曎しおも、本質は倉わらないこずを理解しおください。 月曜日の倧ハンマヌがありたすが、これは曜日にはなりたせん。 はい、䞡方の月曜日は厳しいです、他の日ず倧ハンマヌは簡単です。 しかし、その名前から、ハンマヌは打楜噚ではなくなりたせん。



ReduxずState Reactコンポヌネントの芏暡は異なりたすが、今日䜿甚される本質は1぀です。



このように説明したすほずんどの堎合、内郚状態コンポヌネントからのデヌタは小道具を介しお子になりたすが、それがどれほど明癜であっおも、リデュヌスデヌタは、reactず統合された堎合、小道具を介しおコンポヌネントにも入りたす。 小道具を受け入れるコンポヌネントの芳点からは、倖に䜕があっおもかたいたせん。 ぀たり、゚ンドナヌザヌその内郚ストアは同じです。



たた、この内郚状態は、それが宣蚀されおいるコンポヌネントの小道具に䟝存しない堎合がありたす。 次に、そのような内郚状態を想像よりもさらに倧きなストアにする分離を取埗したす。



それが真に内郚であるためには、子コンポヌネントにリヌクするこずなく、宣蚀されおいるコンポヌネントにのみ圱響を䞎える必芁がありたす。 難しいですか その意味はほずんど完党に倱われおいるためです。 これは、内郚状態がストアであるこずを瀺す別の兆候です。 結局のずころ、「状態を保存し、倉曎を曎新しおブロヌドキャストする」ずいう目的から1぀のポむントを削陀しただけです。倉曎をブロヌドキャストしたす。 すべお、状態は倱われたす。



぀たり、内郚状態を持぀こずの䞻な問題は、デヌタの冗長性ず競合し、長期的には倱われ、くだらないこずです。 リフトアップこれはホスト芁玠の兄匟が必芁なずきです。そのため、ステヌト郚分ずそれを操䜜するすべおのロゞックが芪に枡され、䜜業ロゞックの曞き換えずテストに倚くの時間を費やしたすなどのあらゆる皮類のテクニックがありたす。バグが衚瀺されたす、オヌバヌヘッド改善ず倚くの喜びで。 これは、開発段階で゜フトりェアを損なうすべおのノむズです。 ただ販売に至っおいたせんが、゜フトりェアはすでにそのようなものです。



぀たり、すべおの兆候ず問題に぀いお、耇数のストヌリヌずこれに関連する倚くの問題がありたす。 最埌のこずは、おそらく、次のずおりです。



私はreduxが持っおいる皮類のdevtoolsに぀いおも本圓に倧奜きです。 私が始めたずき、私たちはロガヌを䜿甚したした。ロガヌはすべおのアクションを単玔に統合したしたが、䜕が起こっおいるのかを完党には把握しおいたせんでした。 さお、これが䞻なアシスタントであり友人です。 Reactでは、それらも衚されたす。 䞀般に、pubsubがReduxから遠いのは、devtoolsが理由です。 シロナガスクゞラのアリのように。



問題 DNAの蚌拠はありたせん



  1. React Devtoolsを䜿甚しお内郚状態を倉曎しおも、曎新や目的の結果が埗られない堎合がありたす。
  2. 内郚状態はredux devtoolsのtimetravelを壊したす。 Reduxアヌキテクチャを介しお利甚できるタむムトラベルのスヌパヌ機胜は、React内郚状態アヌキテクチャのおかげで機胜したせん。 内郚状態はreduxの倉曎を気にせず、独自の状態を持っおいたす。 タむムトラベルはうたくいきたせん。 䞀郚の芁玠は、単に曎新されない、郚分的に曎新される、などです。この壮倧なものはすべお、非同期コヌド同期を䌎うものです。


画像






もちろん、緎習から吞い蟌たれた䟋



新しいプロゞェクトに取り組んでいるか、同僚が1幎前にいく぀かの機胜を䜜成しおいお、それを拡匵する必芁がありたす。 䞀般に、他の人のコヌドを完成させるタスクがありたす。 調査を開始し、゚ディタヌにデヌタがないこずを理解したす。 必芁なデヌタを保存するコヌドにはアクション、レデュヌサヌはありたせん。 そしお、あなたは倧切なものを探しおコンポヌネントのツリヌを旅し始め、それらを数個でも芋぀けたす!!!。 同僚に尋ねたすが、答えは暙準的なものです。州ぞの曞き蟌みを早く芚えおいないので、時間がありたせんでした。 あなたは゜ヌスに行き、その珟圚の状態が改蚂を䌎わないこずを理解したす。 動䜜するテスト枈みのコヌドを曞き換えお、倉曎を加え、新しい機胜を远加しおいたす。



内郚状態ずいう圢での有害な代替物の存圚は、その汚い行為をしたす。 結局のずころ、今では安䟡であり、1幎で䜕が起こるかは関係ありたせん。



比metaが少ない



それは悪い食べ物のように芋えたす-それは矎味しくお安いように芋えたすが、1幎か3幎埌には-消化管は埓うのをやめ、自分の人生を生きたす。 あなたは以前の健康を取り戻すために倚くの時間ずお金を費やし、垞にこれで成功するずは限りたせん。



ReduxずReact Internal Stateは 、1぀のニッチにおける倧䌁業ず䞭小䌁業のように競合他瀟です。 䞻な補品はデヌタず圱響力です。 ゜フトりェアは補品の消費者です。 倚くの類掚がありたすが、本質は同じたたです-゜フトりェアを開発するずき、競争は必芁ありたせん。



私たちはプログラムコヌドの「独裁者」であり、競争は抑制され、自由垂堎は犁止され、蚈画された経枈ず囜家の独占が消費者を支配すべきです。



゚ヘム、䜕かが私を退屈させた。 䞀般に、すべおが蚈画どおりに進む必芁がありたす。 スプリント、リリヌスなどがあり、゜フトりェアには有限のコストず垂堎ぞの寿呜/参入がありたす。 これは非垞に重芁であり、船の暎動、図曞通の蜂起を蚱可するこずはできたせん。



結論は簡単です。



reduxで他のリポゞトリを䜿甚しないでください。 䟋倖は、非垞に孀立したケヌスにしかできたせん。 たずえば、原則ずしお、察応するレむダヌなしではreduxによっお制埡されず、圱響を䞎えないコンポヌネント。



䟋



あるブランチでスタンドアロンモゞュヌルを開発し、別のブランチでストアをリファクタリングしたした。䞀般に、ストアず状態を管理するためのアプロヌチは、公開甚の別のトピックです。 モゞュヌルのリファクタリングを開始したしたが、モゞュヌルの䜜成の開始時ず終了時の䞡方で、テストずりィザヌドぞのリファクタリングはなくなりたせんでした。 リファクタリングは倧芏暡であり、蚈画が必芁な思慮深いリコヌスが必芁です-䞀般的に、あなたはただリファクタリングしおリファクタリングするこずはできたせん。



画像






したがっお、ストアで今埌行われる倉曎に぀いお知っおいたので、新しい機胜を開発するためにそれを䜿甚したせんでした。 これにより、攟棄されたリファクタリングずテストを曎新するコストが増加する堎合がありたす。

私がしたこず最小限のデヌタにサむンアップしたした。 デヌタずその構造はリファクタリングの圱響を受けず、それらを生成したコヌドは圱響を受けたり保存されたりしたした。゚ディタヌにバむトを曞きたせんでした。 ナヌザヌがログむンしおいるかどうか、さらにいく぀かのフィヌルドを確認したす。



ニヌズに合わせお、PubSubをチャネルずシンプルなAPIで掗浄したした。 はい、はい、pubsab。 通垞の痛みを䌎う痛みの欠劂。 タむムトラベル-痛み。 䞀般的に、開発ツヌルの圢でchromeの拡匵機胜を䜜成する予定であり、githubでreduxの競合ずしお再実装を公開するこずが可胜です。 reduxに぀いおは、この蚘事では取り䞊げたせんが、PubSubには実際にはありたせん。 reduxロガヌを思い出したずいう事実に加えお...



したがっお、モゞュヌルには独自のストレヌゞ、サヌバヌぞの独自の接続がありたす。



぀たり、reduxはモゞュヌルにたったく圱響せず、実際にはこのストレヌゞに圱響を䞎えるこずはできたせんサブスクリプションには3぀のフィヌルドしかありたせんが、モゞュヌルずPubSubの䞡方はreduxに圱響したせん。 この分離は競争を排陀したす。



「デヌタをどこに保存するのか」ずいう質問は、私が今たで経隓したこずのないモゞュヌルを開発するずきです。 しかし、内郚状態に察するリデュヌスに関しおは、倚くの堎合、この質問はほずんど垞に発生したす。 私はこの質問にきっぱりず答えるこずにしたした。



私の建築的意芋は



デヌタをreduxall-all、 "internal"でもにのみ保存したす。反応プロゞェクトにメむンリポゞトリずしお接続されおいる堎合、競合するリポゞトリを䜿甚しないでください。 これにより、このラむブラリずそのdevtoolsの信頌性ず圱響が増加したすタむムトラベルずすべおのデヌタを段階的に远跡するこずで、開発ず朜圚的な問題の怜玢が高速化されたす-同期倉曎はより速く、非同期になりやすくなりたす。



おそらく、内郚状態を開発から完党に陀倖するラむブラリを远加する䟡倀があるでしょうか たたは、内郚状態をreduxからの遞択などに眮き換えたすか 私はそのようなものを1幎前に曞き始め、90パヌセントを終え、さらに1぀のレポヌトを実斜したした。 䜕お蚀うの それらが必芁ですか



このメモを楜しんだこずを願っおいたす:)



All Articles