【ロピタルの学習記録 2/29】コロナの影響でガイダンスが全然ない2021卒の就活について
コロナの影響で企業説明会やガイダンスなどが減って企業との出会いの場が激減しましたねぇ。
まず予想されるのが、企業の説明やガイダンスが延期され、必然的に採用時期も遅くなるということ。そして2021卒の採用人数も減らすということ。
企業の視点からみても出会いの場が少なく、あまり採用ができずに今年採用人数を減らすという対処と採用時期を遅らせるという対処を取ってくると思います。もしこの状況が落ち着かないようであれば、採用人数を減らすという一択かもしれません。
ガイダンスという受動的な出会いの場はなくなってくるので、もちろん能動的に出会いの場を作るしかありません。そうなってくると活用されるのはインターネットですねぇ。今年は、自分から動いた人は例年に比べても同じくらいの時期に就職できるかもしれませんが、動かなかったらどうなることやら。
そしてドラえもん面白かった。新恐竜早くみたいなぁ...
Javascript
さて、Javascriptですが、もちろん今日もインプット。
js-primerの項目をみて思ったのですが、コンストラクタ関数については説明がないっぽい?もうclassがメインなんですかね。classは多分明日やります。あとクロージャーの復習もせねば。
thisが問題となる時の対処法
applyメソッド
は第一引数にthisとなるオブジェクトを、第二引数には関数の引数を配列で渡すbind
メソッドは第一引数にthisとなるオブジェクトを、第二引数には関数の引数を渡してthisをバインドするthis
を一時的に変数に格納して、それを参照するという方法もある- アロー関数は外側のthisを探索する
- アロー関数はthisを静的に決定する
- アロー関数はthisをしていできない(call, apply, bindなどで)
アプリ開発
今日はミドルウェアとフラッシュ機能を作成していきます
ミドルウェア
公式に書いてありました
ミドルウェアの部分丸パクリしたらできました☺️少し変えてこんな感じ
export default { middleware({ store, redirect }) { if(!store.state.isAuthenticated) { redirect('/user/login'); } }, }
簡単にできたのは良いのですが、なぜか名前付きミドルウェアは実装できなかったんですよね。色々やってみてもダメだったのでお預けにします。そして、これだけだと流石に知識がつかないのでミドルウェアについて調べていきます
ページなどがレンダリングされる前に定義・実行する関数みたいですね。つまり、ログインしていなくて、記事を投稿するページなどに行くと、先にログインしているかを判定する関数を実行して、ログインしていなけれなログインページにリダイレクト。ログインしていたらレンダリングみたいな感じらしいです。
フラッシュ機能
この記事を参考に実装しました。
上の記事では、ページ遷移をした後にフラッシュが消えるようになっていますが、僕はボタンを押したらすぐに消えて、ボタンを幼かったらライフサイクルフックのmountedをトリガーに3秒経過後に消すという実装にしました。
そこで躓いたのがthis
mounted() { const self = this setTimeout( () => { this.$store.dispatch('showFlashMessage',{text: null}) }, 3000); }
このように書いたのですが、もちろんエラーが出ます。今回はdispatchプロパティが定義されていませんって出ました。ですがこれはちょうど昨日javascriptの学習でやったところで、thisが原因だとわかり次のように修正しました。
mounted() { const self = this setTimeout( () => { self.$store.dispatch('showFlashMessage',{text: null}) }, 3000); }
確認はしてないですが多分これでも行けるかな?
mounted() { setTimeout( function() { self.$store.dispatch('showFlashMessage',{text: null}) }.bind(this), 3000); }
昨日の記事でも書いた気がしますが、arrow functionはbindができないので、functionで関数を宣言し、this
をbindしています。
そしてできあがった全体像がこれ
<template> <div> <notification class="mb-3" color="info" v-if="$store.state.text" > {{ $store.state.text }} </notification> <!-- <button v-on:click="del">隠す</button> --> </div> </template> <script> import notification from '~/components/material/notification' export default { components: { notification }, methods: { del() { this.$store.dispatch('showFlashMessage', {text: null}) } }, mounted() { const self = this setTimeout( () => { self.$store.dispatch('showFlashMessage',{text: null}) }, 3000); } } </script>
ひと段落ついたと思ったらスクロールがずれているとNuxtのデフォルトのページ遷移時のスクロールセーブによって、フラッシュが見えないんですよね。んで公式を参考にやってみたけどなぜかできない。
この記事にあるリンクもたどったりして色々やってみたんですけどできなかったんですよね...😭どなたかヘルプしてください。
今日は他にもやることあるので開発は午前中で終わりにします
応用情報
応用情報ただ単に昨日の復習をしました。結構復習時間がかかるんですよねぇ。復習してみると、マジでちゃんと問題文読めよこのやろうって奴が多かったのでちゃんど問題文は読むようにしたいと思いますぅ
明日
ドラえもん見てたりしたら結構時間たっちゃったので今日はここらへんで終わりにします
インプット
- Javascript: js-primer( classらへん )
- Javascript: パーフェクトJavascript( Websocketらへん )
アウトプット
- Team Poeta会議
- アプリ開発: ユーザ編集画面の作成
今週は結構量が少なめでしたが、開発を結構進められたので満足☺️ 明日も力を抜いて少し量は少なめでやりたいと思います。おやすみなし〜