Клиентские и серверные компоненты в NextJS

Вот в чем вопрос: В next есть серверные и клиентские компоненты. Так же в нем есть серверные действия. Я написал такой простенький файл с двумя серверными функциями

'use server'
let num = 0;

export async function increment() {
    num++;
}

export async function getNum(){
    return num;
}

и пытался вызывать эти функции из клиентского:

'use client'
import { getNum, increment } from "@/test/test";
import { useEffect, useState } from "react";

export default function Home() {
  const [st, setst] = useState<number|undefined>()
  useEffect(() => {
    increment()
    .then(getNum)
    .then(num => setst(num))
  },[])
  return (
    <>
      <div>{st}</div>
    </>
  );
}

и серверного компонентов:

'use server'
import { getNum, increment } from "@/test/test";

export default async function Page(){
  await increment();
  const num = getNum();
  return (
    <>
      {num}
    </>
  );
}

Идея была в том, чтобы при перезагрузке страницы значение увеличивалось. Моему удивлению не было предела, когда оказалось, что в клиентском и серверных компонентах значения разные и никак не связаны. Вопрос, как пофиксить это и синхронизировать данные?


Ответы (0 шт):