個人開発メモ
.../dummy?mode=edit
のクエリパラメータ mode
を取得したい
import { useSearchParams } from "next/navigation";
export const Page = () => {
const searchParams = useSearchParams();
const mode = searchParams.get("mode");
...
}
配列の find
関数で以下のように書いてしまい、検索結果がヒットしない凡ミス。
array.find((e) => {
e.id === currentId
})
以下のどちらかにしないと動かない。
array.find((e) => e.id === currentId);
array.find((e) => {
return e.id === currentId
})
型を調べる
const str = 'tori'
console.log(typeof str) // string
favicon.ico
を適用するだけでは、iPhoneの「ホーム画面に追加」時のアイコンには反映されない。
こちらが参考になった。
transition
に複数プロパティ指定する方法。
.component {
transition: width 0.3s, height 0.3s;
}
CSSの animation
で3つのオブジェクトをそれぞれ0〜30%, 30〜60%, 60〜90%のタイミングで入れ替わりで動かしたかったが、きっちり30%ずつ動かない。
例えば、オブジェクト1で0〜30%、オブジェクト2で30〜40%とすれば、実際に動いている時間は等しくなる。
emotionを導入しようとしたが、Client Componentsでのみ使えるとのことだった。
あとで不都合が生じるかもしれないのでやめた。
Next.jsがサポートを明言している他のCSS-in-JSだと、引数を渡すことができない?
フロントでパスパラメータとクエリパラメータの使い分け。
CSSで transition
opacity
を使って2つのオブジェクトをスムーズに入れ替えるアニメーションが、iOSのChromeでチラついた。PCのlocalhostでは問題なかった。
transition
に関する解決方法、opacity
に関する解決方法を試したがうまくいかなかった。
ライブラリならブラウザごとの問題を解決してくれるかと思い、motion
を導入。
実装してみたがやはりちらつく。アニメーションではなく、スクロールに関する問題かも。
motion
の useScroll
で scrollY
を取得してその値でstateをセットしてみた。
const { scrollY } = useScroll();
useMotionValueEvent(scrollY, "change", (latest) => {
if (latest > 157) {
setShowStickyIcon(true);
} else {
setShowStickyIcon(false);
}
});
ちらつきがなくなった!
メインの page.tsx
に置いてstickyさせていたコンポーネントを、子コンポーネントとして別ファイルにしたら、stickyが効かなくなった。
スクロールさせながら getBoundingClientRect()
で top
を取得したら変化していないので、子コンポーネント内での位置の変化検知になっていそう。
container
と wrapper
の違い。