Reactプロジェクトで必ず現れるRedux。
はじめてお目にかかった時は理解が大変でした。
いしけんさん、独自の見解があるようです。
Reduxを分かりやすく紹介してくれます。
Reactを始めるならReduxも始めよう
Reactの公式ページではなぜかまったく触れられていないReduxですが、
初めから知っておきたい、使っておきたいライブラリです。
ちなみにReactの公式では必要かどうかのQ&Aに「Maybe(多分)」と書いてあります。
実はいしけんはReactで巨大なプログラムをいくつも書いた後でReduxを知ったのですが、
むしろはじめから教えておいてくれよ!と思うくらい必須のライブラリだと思います。
ReduxとReactの公式ページを見比べてみると温度差ありますが、
Reactのスケルトンプログラムに標準装備しておけといいたくなるくらい必須の技術です。
今まで作ったプログラム書き直さないといけない…
Reactの公式ページにReduxのせておいてよ!
JavaScriptは様々なイベントが飛び交う
JavaScriptで書かれたプログラムは色々なタイミングで様々なイベントが飛び交います。
基本的には変数は決められたスコープ内では守られていますが、変更されるタイミングは様々です。
(例えば、APIの応答が完了したら更新される。ユーザーの操作で更新される。これが同時に起こる等々)
Reduxはimmutable(不変性)を維持してくれる
公式サイトによくでてくる言葉で「immutable」というものがあります。
Reduxは変数の「immutable(不変性)」を維持します。どいうことでしょうか。
これはReduxの仕組みを使っていれば変数を守ってくれるということです。
想定外の操作でもバグが起きなくなるということですね。
実際に試してみましょう。
これを表現してくれるプログラムが公式にあったのでTypescriptで書いてみました。
「+」や「ー」を押すと数字が1増えます。「Add Amount」と「Add ASync」を押すと2増えます。
これらのボタンをタイミングずらして押したり、連打したり、同時に押したとしても
必ず規則的に計算が行われている様子が分かると思います。
これが変数の「不変性」の維持です。バグらないのすごいですよね。
正しい動作を実現するのは難しいです。Reduxを使わないと、なかなかこうはいかない。
これでReactのプロジェクトが巨大になっても安心。
公式サイトを冒険しよう
実はこのReduxは様々な考え方があります。Action/Reducer/Storeの考え方から説明することが多いのですが
正直そもそもなんで必要なのかがわかりづらいライブラリでした。
上にあるサンプルはRedux公式に記載があったものです。これを見たとき、やっと意図をつかむことができました
考え方は色々、だけどReact Redux公式があるよね
というのも、グーグルで検索するとReduxについては様々な考え方や説明があります。
Redux Sagaが出てきたときには一層Reduxが分からなくなってきました。
確かに書き方は簡単になったけど、ファイル数増えてるし意味あるんですかこれは?みたいに思いましたね。
※Redux Sagaはチェインソーのように強力だが、日常生活でそんなにチェインソーつかいます?
みたいな意見を見かけました。なかなか面白い表現。
CreateSliceの考え方が一番簡単
Redux公式サイトのクイックスタートにサンプルがあるCreateSliceの考え方が一番簡単です。
不変性の維持と、このサンプルをまねて書けば使い方が分かると思います。
このサンプルを味わってから、Reduxの大枠の概念を読むと本質を理解しやすいと思います。
ReducerやAction等の独自用語は後からでよいと思います。
まずは不変性の大切さを知る。サンプルを見る。
そして、過去のJavascriptプログラムの不安を知る。が順番です。
どうも技術的な戦いが繰り広げられていそうなReduxなんですが、
いしけんは公式支持です。CreateSliceが一番簡単ですもの。他はもう忘れる事にします。
コメント