未分類

カレンダーアプリ改

投稿日:

全く理解できなかった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

品質マネジメント

品質とは 製品や意図した機能及びパフォーマンス、並びに顧客によって認識される価値や便益 品質マネジメント7つの原則 1、顧客重視 顧客満足は組織を存続させるための最終目的であり、ここでいう顧客は単にお …

no image

なぜ脳は神を作ったのか?

この本は脳科学者の苫米地さんが脳科学、言語学をはじめとした社会学の観点から信仰心とはどのようなもので世の中にどういう影響を与えているのか、これから先どのように文明を築き上げていのか書かれています。まず …

no image

人はなぜ戦争をするのか

 今日は「人はなぜ戦争をするのか」を読みました。この本は物理学者のアインシュタインが今やりとりしたい人は誰でどんなことを聞きたいかというイベントでアインシュタインが心理学者のフロイトに人はなぜ戦争をす …

no image

京都行きます

友人たちと京都に行ってきます。久しぶりの旅行なのでとても楽しみです。その友人たちは中学の同級生で、いわゆる「地元メン」です。一人は保育園が同じの幼なじみのやつで、ちっこいイケメンくんです。自分はそいつ …

no image

進化しすぎた脳3

 今日は面接がないのでダラダラしていました。「進化しすぎた脳」ももう直ぐ終わりそうです。ここまでの話を簡単にまとめると、脳は人間の体から受け取る信号を解釈して再度信号を送り、命令する役割を持っています …