こういうときはスプレット構文を使うんやで
はじめに
こういうときはこう書け!
というやつです。適当なサンプルコードです。
リファクタ前
まず、元のコードは以下のようになっています。
const fetchShop = () => { axios.get('/api/hoge/shop').then((response) => { try { if (response.status === 'success') { const fetchedShop = { id: response.data.id, name: response.data.name, zipcode: response.data.zipcode, formatZipcode: response.data.zipcode.slice(0, 3) + '-' + response.data.zipcode.slice(3), prefecture: response.data.prefecture, formatAddress: response.data.address, tel: response.data.tel, formatTel: response.data.formatTel, } setShop(fetchedShop) } } catch (error) { console.error(error) } }) }
このコードでは、response.data
から取得した各プロパティを一つずつfetchedShop
オブジェクトにセットしています。
リファクタ後
次に、リファクタリング後のコードは以下のようになります
const fetchShop = () => { axios.get('/api/hoge/shop').then((response) => { try { if (response.status === 'success') { const fetchedShop = { ...response.data, // response.dataの全てのプロパティを一度にfetchedShopにセット formatZipcode: response.data.zipcode.slice(0, 3) + '-' + response.data.zipcode.slice(3), // formatZipcodeプロパティを追加 } setShop(fetchedShop) // fetchedShopをsetShop関数に渡す } } catch (error) { console.error(error) } }) }
このコードでは、...response.data
という記述(スプレッド構文)を使って、response.data
の全てのプロパティを一度にfetched
Shopオブジェクトにセットしています。
formatZipcode
は郵便番号を特定の形式(例えば、123-4567
)に変換するためのものです。
response.dataの値を操作して新しいプロパティ名に改変している、つまりresponse.data
には存在しないプロパティに関しては個別に追加しています。
このようにコードをリファクタリングすることで、コードがシンプルになり、読みやすくなりますし、新たなプロパティが追加された場合でも、コードの修正が容易になります。
おしまい
コメント
本記事の内容は以上になります!
プログラミングスクールのご紹介 (卒業生より)
お世話になったプログラミングスクールであるRUNTEQです♪
こちらのリンクを経由すると1万円引きになります。
RUNTEQを通じて開発学習の末、受託開発企業をご紹介いただき、現在も双方とご縁があります。
もし、興味がありましたらお気軽にコメントか、TwitterのDMでお声掛けください。