環境
react: 16.13.1
next: 9.5.2
Next.jsで検索機能を実装しているのですが、最初の数回値が取れない時があるので、最後のレンダリング時のみに実行させる方法があれば教えて欲しいです。
urlは以下のように変化します。
/page
↓
/page?q=xxxxxxx
値は
undefined
{q: 'xxxxxxx'}
のように順番に入ってきます。
実装したコードは以下になります。
js
1 const [query, setQuesy] = useState(''); 2 useEffect(() => { 3 // queryが利用可能になったら処理される 4 if (router.asPath !== router.route) { 5 setQuesy(router.query.q); 6 } 7 }, [query]); 8 9 useEffect(() => { 10 // 関数の実行 11 async function getPosts(query) { 12 setIsLoading(true); 13 const allPosts = await fetchEntriesPost(limit, skip, query); 14 setPosts([...allPosts]); 15 setTimeout(() => { 16 setIsLoading(false); 17 }, 400); 18 } 19 getPosts(query); 20 }, [query]); 21
query判定などで分岐かけましたが、複数回useEffect内の関数が呼ばれ、検索機能においてパラメータが渡されていない時のデータも一瞬表示されることがあります。
どのように改善するべきかアドバイスの方よろしくお願いいたします。
できれば、useEffectの実行回数を最小限に抑えたいです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。