h-yoshikawa44 / ch-country-quiz

devChallenges リポジトリ(出典:[devChallenge(legacy) - Front-end Developer - Country quiz](https://legacy.devchallenges.io/challenges/Bu3G2irnaXmfwQ8sZkw8)
https://ch-country-quiz-h-yoshikawa44.vercel.app/
1 stars 0 forks source link

[新規]ロジック作成 #5

Closed h-yoshikawa44 closed 2 years ago

h-yoshikawa44 commented 3 years ago

作業内容

h-yoshikawa44 commented 3 years ago

ロジック設計

処理の流れ

国情報

API 仕様に合わせてモデル定義。

クイズ情報

カスタムフックでクイズ情報を管理。

追加

h-yoshikawa44 commented 2 years ago

API が使えなくなった?

2022/01/07 に久しぶりに戻ってきたところ、API が使えなくなってた。 ドキュメントサイトも開けない。一時的にサーバが落ちているのか等は不明。 ↓ 最近、投稿している人の API リクエスト部分を見てみると、https://restcountries.com/ を使用していた。

これについて調べてみると、どうやらオリジナルの方が https://restcountries.eu らしく。 このオリジナルは現在サブスクリプション API になったとのこと。 このオリジナルに触発されたものが https://restcountries.com/ で、こちらは現在でもオープンソースで使えるらしい。

h-yoshikawa44 commented 2 years ago

問題の生成

必要なデータ

API から取得するデータはプロパティを限定できるので、必要なものだけ取得するようにする。

[
  {
        "flags": {
            "png": "https://flagcdn.com/w320/ng.png",
            "svg": "https://flagcdn.com/ng.svg"
        },
        "name": {
            "common": "Nigeria",
            "official": "Federal Republic of Nigeria",
            "nativeName": {
                "eng": {
                    "official": "Federal Republic of Nigeria",
                    "common": "Nigeria"
                }
            }
        },
        "capital": [
            "Abuja"
        ],
        "region": "Africa"
    },
   ...
]

問題の種類

とりあえずデザインデータにある、以下2種類にしようかと思う。

クイズデータ生成ロジックがちょっとめんどくさそう。

h-yoshikawa44 commented 2 years ago

コンテクストの利用

最初は、通常のコンポーネントからカスタムフックで必要なものを取り出して使う気でいたが、複数ページ間で状態を共有したい状況になったので、間にコンテクストをはさむことにした。

参考:useContextとuseStateで状態をグローバルに共有する