Ошибка гласит:
страница является асинхронным клиентским компонентом. На данный момент асинхронными могут быть только серверные компоненты. Эта ошибка часто возникает из-за случайного добавления «использовать клиент» в модуль, который изначально был написан для сервера
Код: Выделить всё
app\product\[slug]\page.tsxКод: Выделить всё
'use client'
import { useParams } from 'next/navigation';
import { Navbar, ProductDetails } from '../../components';
import { client } from '@/sanity/lib/client';
import { groq } from 'next-sanity';
const page = async () => {
const {slug}:any = useParams();
const products = await client.fetch(groq `*[_type=="product"]`);
const product = products.find((product:any)=>product.slug.current == slug);
return (
)
}
export default page
Код: Выделить всё
app\components\ProductDetails.tsxКод: Выделить всё
import React from "react";
const ProductDetails = ({product}:any) => {
return (
{product.name}
)
}
export default ProductDetails
- Я не могу сделать page.tsx серверным компонентом, поскольку мы используем useParams().
- Я хочу реализовать второе решение «Использование использования с поставщиком контекста», но все попытки реализовать его не увенчались успехом, и я застрял.
- Я также пытался использовать третье решение, но не уверен, как сформулировать синтаксис.
Подробнее здесь: https://stackoverflow.com/questions/798 ... client-com
Мобильная версия