【React】useState使用時に画面が一瞬消える問題
こんにちは、フリーランスエンジニアの太田雅昭です。
今回は、useStateで値を更新した時に、なぜか画面がチラつく現象が起きましたので、その解決方法を共有させていただきます。
ちらつくコード
以下のコードで、画面がちらついてしまいます。
"use client"
import { useState } from "react";
export default async function Test() {
const [test, setTest] = useState<string>('test');
const handleChange = (e: any) => {
setTest(e.target.value)
}
return (<>
<div>
<input type="text" value={test} onChange={handleChange} />
</div>
</>);
}
解決方法
非同期にしていたことが問題でした。サーバーだと非同期にしないといけないので、その辺りで混在してしまったものと思われます。ですので、上記からasyncを外せば、正常に動作するようになります。
layoutの問題なのか、muiにバグがあるのか、middlewareかなどなど問題の切り分けに苦労しました。特にlayoutを入れ子にしているので、きっとどこかのlayoutで問題があるに違いない。テーマプロバイダーか?バックエンドとの通信か?などなど。まさかこんな単純な話だったとは。なかなか気づかないものですね。
ではでは。