Snažím se přidat funkci, v mém Next.js webové stránky, které umožňuje uživatelům klepněte na tlačítko vytvořit novou skupinu, pak přesměrovat je na "Pozvat členy" stránku, která používá automaticky generované group_id v URL s dynamické směrování. Já jsem v současné době pomocí Next.js's Router, ale mám pocit, že je lepší (nebo pracovní) způsob, jak to udělat.
JS (v export default function groups ()
):
const [num, setNum] = useState("");
const router = useRouter()
const createGroup = async () => {
const { data, error } = await supabase
.from("chatgroups")
.insert([
{
group_name: groupName,
creator: user.email,
description: groupDesc,
accepted_members: user.email + " ",
invited_members: ""
}
]);
if (error) {
console.log(error);
} else {
setNum("/groups/" + String(data[0].group_id));
router.push(num);
}
};
HTML (vráceno ve stejném JS skript):
<button type="button" className="bg-yellow-500 rounded px-12 py-2" onClick={()=> {
createGroup()
}} >Insert test group</button>
Snažil jsem se pomocí Routeru na obou serveru a klienta, a to jak neuznal .push()
import { Router } from "next/dist/client/router";
import { Router } from "next/dist/server/router"; //neither of these recognized the method.
Mým cílem je vykonávat funkci createGroup(), ve které hodnota "data", obdrží automaticky generované int id nového SQL řadě. Pak chci použít toto číslo pro přesměrování "/skupin/[id]", kde [id] je nový ID. Snažil jsem se pomocí Odkazu s const [num, setNum]
, ale to provede redirect, NEŽ se nová hodnota je nastavena. Jsem poměrně nový na Next.js, takže bych ocenil jakoukoliv pomoc s tímto.
Požadovaný výstup: Klepněte na tlačítko -> přidá řádek do SQL tabulky s group_id = 17. Přesměrovat uživatele na "/skupin/invite_members/17".
Edit: jsem aktualizoval můj hlavní JS kódu výše k použití useRouter(), teď to funguje pouze každé druhé kliknutí.