未分類

カレンダーアプリ改

投稿日:

全く理解できなかったreduxがほんの少しわかってきたのでカレンダーアプリに戻りました。当初の予定では1月中にはカレンダーアプリを作成し終わる予定だったのですが、カレンダーアプリを舐めていたこともあり、断念しました。それの原因となるのはreduxと言われているコンポーネントから独立して状態を持つことができる機能の複雑さでした。クラスコンポーネントを使った場合にはクラスの中でstateとして状態を持つことができるのですが、関数コンポーネントの中ではstateを持つことができません。それではクラスコンポーネントを使えばいいということになりそうなのですが、そうしない理由の一つにjavascriptのthisの挙動によるエラーを上げる事ができます。thisを使ったstateの参照では常に新しい値が参照されます。この何がいけないのかというと送られるべきthisで参照する値がユーザーに表示させる途中で変更があった場合に表示させるべき値ではなく、変更後の予期しない値を表示させてしまう事があります。これを避けるためにthisの内容が予め決まっている関数を使ってコンポーネントを表示させるのが望ましいのです。そこで関数コンポーネントでもstateとして状態を持つ事がd駅るように考えられた仕組みがreduxというものです。これはコンポーネントから独立してstateを保持し、欲しい時に随時参照する事が可能になります。その仕組みはややこしいのですが、状態をコンポーネントから分けることによってコンポーネント内部の可読性が向上します。そもそもクラスコンポーネントでstateを持たせる場合でもその子要素でも孫要素でも同じstateを持たせたい場合には最上層のコンポーネントにstateを保持させておくことになるのですが、それを子要素にバケツリレー式にpropsで渡していくことになり、アプリの規模が大きくなると訳のわからないことになるのです。こうした理由でreduxが使われ、コンポーネントもできるだけ関数で書くようになってきています。

今日学んだこと

訳のわからなかったカレンダーアプリを断念し、reduxを使った簡単なアプリを作ってreduxの理解を深めてから再度カレンダーアプリに戻りました。そうしたらばカレンダーアプリを作成していた当初よりもどんな実装をしているのかわかるようになっていることに気がつきました。闇雲に突っ込んでいくのではなく、多少遠回りしても着実に理解していき、進んでいく事が大事だと思いました。理解するという事がどういうものかとても不思議なのですが、全くわからなかったものがわかるようになることは楽しいことだと感じました。なのでこれからも訳のわからないものが現れればそれを理解した先には面白い事があるということを肝に命じていきたいと思います。

-未分類

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

オープンソース

プログラミングでプログラムを作る際に全部無料のソフトウェアでアプリケーションを完結させてしまうことができるのですが、オープンソースのプログラムはどのようにビジネスを成り立たせているのか気になったので …

no image

ロックンロール2

 今日は朝は全くやる気が起こらず、だらだらしてしまいました。そこから履歴書と職務経歴書を書いていました。久々に文字を書いたので楽しかったのですが、途中から飽きてなかなか進みませんでした。そんなときには …

no image

sql

 今日はドイツからイギリスへ金融のことを学びました。イギリスには大きな金融市場があってそこで世界中のお金が動い回っています。どういうことかというと、企業や銀行、政府、個人、様々なお客さんが金利や価値の …

no image

日本の経済

 「資本主義って悪者なの?」を読み終えました。資本主義は格差を広げていく仕組みになっています。いや正しくは資本主義の仕組みによって人間が格差を広げているという状況になります。これをなくすために新しい仕 …

no image

チャットアプリ

今回のアプリではまず最初にユーザーのニックネームをフォームに入れて「はじめる」を押すとチャットの画面に遷移します。そのチャット画面の中でメッセージとしてテキストフィールドにメッセージを送るとチャット画 …