CodeSandboxでFirebaseを使う
できるのかなーと思ったら、案の定できるようだ
やってみる
/icons2/CodeSandBox.iconhttps://codesandbox.io/s/flamboyant-hill-3jg10
React TableでCRUDを実装してみる#5fbb810e1280f00000d27fbbをforkした
23:01:02 firebase.tsをhttps://github.com/takker99/react-chat-sample/blob/master/src/firebase.ts からコピペする
23:03:54 した
API keyがばれるのは今回は気にしない
どうせ無料だし、なんとかなるだろ
firebaseのprojectを作っておくか
できた
codesandbox-sample
idは後ろに通し番号をつけておくべきだったかな……
後の祭り
appを登録する
codesandbox.ioからのaccessを許可しておく必要がある
from 13.vue.jsとfirebaseで認証つきボイスレコーダー:index.html [サルでもわかるWEBプログラミング]
23:15:36 あとは、ここの記事のとおりにやってみる
新:React + FirestoreでCRUD(基礎編) - Qiita
2020-11-27 14:11:15 これ終わったらreact-firebase-hooksを使ってみた(Firestore Hooks編) - Qiitaを試してみる
23:25:24 React Routerを使うっぽい
入れておく
23:36:16 ここまでやった
なぜかreact-router-domを入れているのに、存在しないとlint errorが出る
2020-11-27 14:22:18 @types/react-router-domを入れていないのが原因だった
compileは成功しているので無視する
2020-11-26 12:16:02 続きをやる
とりあえずここからコピペして動かせるようにしてみる
12:19:19 React Routerでページ遷移をscriptからやるにはどうすればいいんだろう?
React Hooksでやる方法ないかな?
12:23:59 検索wordに「hook」まで入れたらいろいろ出てきた
ここがドンピシャ
Hookにも対応!Vue.jsエンジニアのためのReact Router v5入門 | Hypertext Candy
てかCodePenを使ってReact.jsを学ぶ練習logでお世話になったサイトだ
2020-11-26 12:31:31 書いた
React Routerでprogramからページ遷移する
12:43:52 FormikをReact Hook Formで書き換えてみる
13:11:38 React Hook Formを書いた
22:59:05 <label>を入れ子にすると、validationが効かないみたい?
これがだめ
code:tsx
<label className="label">
Label
<input type="text" name="text" ref={register({required: true})}/>
{errors.text && (<span>Invalid value</span>)}
</label>
これなら動く
code:tsx
<label className="label">Label</label>
<input type="text" name="text" ref={register({required: true})}/>
{errors.text && (<span>Invalid value</span>)}
もしかしてvalidation messageを<label>の中に入れたのがまずかったのかな?
<input type="email">は明示的にemail用正規表現を渡さないと動かないみたい?
あとrequired: trueもいる
submitを押さないと検証が更新されない?
いや、registerの変数をきちんと設定すれば、入力ごとにちゃんと更新されている
codesandboxのpreview欄をreloadしたかどうかでも変わる
あとBulmaでform controlを使用する場合は、以下のページにある構造に沿ってつくったほうがよさそう
Form controls | Bulma: Free, open source, and modern CSS framework based on Flexbox
23:32:33 今更ながらfirebaseをReact Hooksから使えるようにするやつを見つけた
React Firebase Hooks
これ使う方向に切り替えるか。
23:45:15 今日はここまでにする
明日
Class ComponentをReact Hooksに書き換える
React Firebase Hooksの使い方
2020-11-27 12:16:13
Class ComponentをReact Hooksに書き換えるを書いた
公式ガイドからuseEffect()の仕組みと使い方を学んだ
ほんと親切に書かれている
12:17:12 これもを元にpages/Index.tsxを少し書き換えた
ただcollection (firestore)操作側のAPIの使い方を忘れた
どう使用かな
公式documentを見て勉強し直す
裏で動いている処理を知っていたほうがいいから、こっちだな。
13:23:43 調べるのだんだんめんどくさくなってきた
まあでも書くかあ
FIrestoreでCRUD
/icons/done.icon14:04:47 書き終わった
real-time 更新は書いていない
勉強しないでさっさとReact Firebase Hooksでwrapしてしまう
14:10:50 だいたいFirestoreの挙動は理解した 
real time listenはまともに読んでいないけど、React Firebase Hooksに全部任せられるから別にいい
react-firebase-hooksを使ってみた(Firestore Hooks編) - Qiita
16:43:53 再開
Detail.tsxを実装
16:55:20 今使っている記事、真似るにはあまりよろしくない気がしてきた
Firebaseと関係ないForm frameworkを使っている
そのcodeを書き直さないといけない
user情報もなぜかFirestoreに統一してしまっている
まあでももう少しやってみるか
Formに関しては書き換え方だいたいわかったし
17:21:28 /members/に対して一時的にaccessできるようにした
試し終わったらlock modeにしよう
17:24:08 うごいたうごいた
https://gyazo.com/fc9e3c98b797a33761a2daaa8344119e
17:24:55 <Detail />に閲覧したいuser dataのdocument idを渡すようにしよう
そうしないと実装がおかしくなる
17:28:55 useDocumentDataOnceを使えば、document Idからデータをhookで取得できるか。
17:38:04 React Routerでparameterを渡すにはどうすればいいんだろう?
調べる
17:44:15 調べた
17:45:12 できたっぽい?
動作確認したこと
UserDataの新規作成
Dataの詳細表示
Dataの更新
Dataの削除
確認してみる
404 pageへジャンプ
UserDataをfirebase consoleから削除した後、詳細ボタンを押してみる
17:46:45 確認できないや
real time同期されているから、表示がすぐに変わってしまう
いい感じみたい!takker.icon
17:49:10 この練習はこんなものかな
まだやるとしたらやること
Bulmaでlayoutを調節する
んーそれを今する気はないかな。
先にauthendicationを使うのが先だな
17:53:31 テスト終了したので、security ruleをlock modeに戻す
次
CodeSandboxでFirebase authendicationを使ってみる
References
13.vue.jsとfirebaseで認証つきボイスレコーダー:index.html [サルでもわかるWEBプログラミング]
/icons2/CodeSandBox.iconfirestore-todo-app - CodeSandbox
#CodeSandbox #firebase
#2020-11-27 12:19:20
#2020-11-26
#2020-11-23 21:36:11