javascript 在next.js中使用客户端组件中的serverActions时,不允许使用serverc/await

fumotvh3  于 12个月前  发布在  Java
关注(0)|答案(1)|浏览(166)

在next.js中构建一个无限滚动,我试图调用我的serverAction来加载MoreData,并使用javaC/await来等待API调用并获取结果。
获取错误:

“客户端组件尚不支持”/await“,仅服务器组件支持。

tsx是一个服务器组件,它为初始图像调用同一个服务器操作一次。

// page.tsx

const Home = async ({ searchParams }) => {

  const searchKeyword =
    typeof searchParams.keyword === "string" ? searchParams.keyword : "";
  
  let apiResponse = await getPhotos({ query: searchKeyword });

  return (
    <main className='p-6 flex justify-center w-full min-h-screen bg-black'>
      <InfiniteScrollData
        search={searchKeyword}
        initialData={apiResponse?.results || []}
      />
    </main>
  );
};

export default Home;

字符串
下面是服务器操作:

// actions.ts

"use server";

export const getData = async ({
  query,
}) => {
  
  const { response } = await fetchData({
    query,
  });
  apiResponse = response;
  
  return response;
};


下面是客户端组件

// InfiniteScrollData.tsx

"use client";

// imports

const InfiniteScrollImages: = ({
  search,
  initialData,
}) => {
  const [data, setData] = useState(initialData);
  const [page, setPage] = useState(1);
  const [loaderRef, inView] = useInView();

  const loadMoreData = useCallback(async () => {
    const next = page + 1;
    const response = await getData({ query: search, page: next });
    if (response?.results?.length) {
      setPage(next);
      setData((prev) => [...prev, ...(response?.results || [])]);
    }
  }, [page, search]);

  useEffect(() => {
    if (inView) {
      loadMoreData();
    }
  }, [inView, loadMoreData]);

  return (
    <>
      <div>
        {photos?.map((item) => (
          <Card key={item.id} data={item} />
        ))}
      </div>
      <div ref={loaderRef}>
        <Loader />
      </div>
    </>
  );
};

export default InfiniteScrollImages;


使用email protected(https://stackoverflow.com/cdn-cgi/l/email-protection)
也许有另一种从客户端组件调用服务器操作的方法?

eqqqjvef

eqqqjvef1#

你的错误直接表明你不能在客户端组件中执行await函数,所以你应该在代码中摆脱它:

const Home = ({ searchParams }) => { // no async

字符串

相关问题