how to use suspense in a "use client" file
Unanswered
Northern Rough-winged Swallow posted this in #help-forum
Northern Rough-winged SwallowOP
so i have a client component which has useeffect to update the state of the componeent and that component has a a server component which takes in the state of the parent component , the server component user a server function to fetch data in a async fashion
client.tsx
//some function
usestate,useffect ;
return (<suspense><servercomp state></suspense>)server.tsx
//some function
data = await longdatafetch()
//server component
return
data = data()
return <div>{data}</div>1 Reply
Northern Rough-winged SwallowOP
im posting some code for reference
this causes infinite loop
"use server"
export async function delayedFunction() {
return new Promise((resolve) => {
setTimeout(() => {
console.log("Function completed after 4 seconds");
resolve("Delayed function result");
}, 1000);
});
}
export async function fetchblogs(count:number) {
// console.log(x)
let x = await delayedFunction();
let p = 1
return `blogs by me
cfcf \n
cfcfcf \n
cfcfcf \n
cfcfcf \n
cfcfcf \n
fcfcfc \n
`
}
export default async function Blogsser({count}:{count:number}) {
let blogs = await fetchblogs(count);
// let blogs = await fetchblogs(count);
return (
// <Suspense fallback={<div>Loading...</div>}>
<><br />
<div id="bloglist">
{/* <span className="!text-5xl " >{blogs}</span> */}
<><br />
<div id="bloglist">
<span className="!text-5xl " >{blogs}</span>
</div>
</>
</div>
</>
// </Suspense>
);
}
// "use client"
// import { fetchblogs } from '@/app/blog/bs';
// export async function Br({count}:{count:number}) {
// let blogs = await fetchblogs(count);
// return (
// <><br />
// <div id="bloglist">
// <span className="!text-5xl " >{blogs}</span>
// </div>
// </>
// );
// }
// export default async function Blogsser({count}:{count:number}) {
// // let blogs = await fetchblogs(count);
// return (
// <><br />
// <div id="bloglist">
// {/* <span className="!text-5xl " >{blogs}</span> */}
// <Br count={count}></Br>
// </div>
// </>);
// }