import { useState, useEffect, useContext } from "react"; import { Context } from "../../store/Store"; import { useNavigate } from "react-router-dom"; export default function LocalMultiForm() { const [state, dispatch] = useContext(Context); const navigate = useNavigate(); const [players, setPlayers] = useState(null); const [formVariant, setFormVariant] = useState(null); const [playerOne, setPlayerOne] = useState(''); const [playerTwo, setPlayerTwo] = useState(''); const [playerThree, setPlayerThree] = useState(''); const [playerFour, setPlayerFour] = useState(''); const allPlayerNames = [playerOne, playerTwo, playerThree, playerFour]; const formVariants = [ <> { /* Fragment, expects to be concatenated as necessary within a
element */ } { /* Player one and two base; index 0 */ } setPlayerOne(e.target.value)}> setPlayerTwo(e.target.value)}> , <> { /* Player three add on */ } setPlayerThree(e.target.value)}> , <> setPlayerFour(e.target.value)}> ]; // useEffect for player form logic useEffect(() => { switch (players) { case "2": setFormVariant(formVariants[0]); break; case "3": setFormVariant([formVariants[0], formVariants[1]]); break; case "4": setFormVariant([...formVariants]); break; default: console.log("none"); break; } }, [players]); const handleStartGame = () => { let toSubmit = []; let iter = 0; while (iter < players) { toSubmit.push(allPlayerNames[iter]); iter++; } if (toSubmit.length < players) return; for (let item of toSubmit) { if (!item) return; } dispatch({ type: "ADD PLAYERS", payload: toSubmit }); navigate('/gameboard'); } return ( <>

Number of players:

setPlayers(e.target.id)}>
setPlayers(e.target.id)}>
setPlayers(e.target.id)}>
{formVariant}
) }