🤔

アプリ作成で詰まったところ(追記)

2022/02/16に公開

MUIでスケルトン作成する。

大きさがよくわからず作るのに時間がかかってしまった。
クロームのdevtoolで確認

500*56で作成する。MUIなのでsxでpx指定。Skeletonに直接widthPropなど渡すとちょっと挙動が変わる?
連続するようなものは次のようにして複製するとスッキリする。

const skeletons = [...Array(5)].map(() => <Skeleton variant="rectangular" sx={{ width: "500px", height: "56px", borderRadius: "5px", }} />)

FireStoreで日付を取得して描画する

Firestoreに登録したデータをfetchしたときに日付のデータnullなので落ちる。
そんなときは取得したデータにオプション値を渡すと解決する。

// book型チェック
const asBook = (doc: DocumentSnapshot) => {
  const book = doc.data();
  const errorMsg = "データの取得に失敗しました。"
  // 型チェック
  console.log(book);
  if (typeof book === "undefined") throw new Error(`${errorMsg}_book`)
  if (!("bookId" in book)) throw new Error(`${errorMsg}_bookId`)
  // アサーション部分は省略
  // 型を確定させて返却する際に{ serverTimestamps: "estimate" }とすることで解決
  return { ...doc.data({ serverTimestamps: "estimate" }), id: doc.id } as FetchedBook
}

doc.data({ serverTimestamps: "estimate" })とすることでnullを回避できる。

Discussion