1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[Next.js+TypeScript]lodashでリファクタリングしたら綺麗になったtips

Last updated at Posted at 2022-03-15

以下は自分で、フロントコードを描いてて、こうやればいいのかと思った場所を記述するメモです。

画面遷移時にtoastでメッセージを表示したい。

スクリーンショット 2022-03-15 10.42.36.png

以下のオブジェクトからtextを取得したい。

const MESSAGE_TYPES = {
  success: {
    text: '成功しました。',
  },
}

自分で描いた方法

outer.query.messageにはsuccessが入ってる
だが、
MESSAGE_TYPES[status]で型エラーが出てしまう。
なので、//@ts-ignoreでTypescirptのエラーを凌いだ。

const status = router.query.message
// @ts-ignore
const { text } = MESSAGE_TYPES[status]

改善

import _ from 'lodash'
// asで強制型変換
const status = router.query.message as string

//lodash、_.getで取得する
const { text } = _.get(MESSAGE_TYPES, status)

全体コード

//画面遷移時にquery.messageなかったらreturn
if (!_.has(router, 'query.message')) return

//qurry.messageの中身があったら表示
const status = router.query.message as string
const { text } = _.get(MESSAGE_TYPES, status)
toast.notify(text, {
      duration: 5,
      type: status,
    })
}, [router])

toastは以下を使用した。

1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?