h-yoshikawa44 / ch-weather-app

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

[新規]メニューと、ロケーション検索~選択ロジック作成 #7

Closed h-yoshikawa44 closed 2 years ago

h-yoshikawa44 commented 2 years ago

ロケーション検索機能を持ったメニューを作成する

作業内容

h-yoshikawa44 commented 2 years ago

inert 有効化判定

メニューを開いた時、天気トップ表示(PC サイズだと左側の領域)は単純に inert 有効化でいいのだが...。 天気詳細表示(PC サイズだと右側の領域)は、モバイルサイズの時だけ inert を有効化したいという特殊な状況。

悩んだ結果、メニュー・ロケーション検索管理用カスタムフックに以下の処理を追加した

// モバイルサイズの時だけ inert を有効化したい部分があるので、その判定 const inertCheck = useCallback(() => { if (open && window.innerWidth < breakPoint.md) { document.body.style.overflowY = 'hidden'; setInertFlg(true); return; } document.body.style.overflowY = ''; setInertFlg(false); }, [open]);

// メニュー開閉時と画面リサイズ時に inert 判定をするように useEffect(() => { window.addEventListener('resize', inertCheck); inertCheck(); }, [open, inertCheck]);



あとは、カスタムフック呼び出し側で
- 天気トップ表示部分:open で inert 付与分岐
- 天気詳細表示部分:inertFlg で inert 付与分岐