我试着构建不同大小的Tictactoe游戏,并创建一个游戏菜单来选择要玩的棋盘。但是,在使用无线电形式选择板大小后,我很难找到如何重定向或导航“开始”按钮。我只造了两个板子大小只是为了测试。这是我的密码
Menu.js:
import React, { Component,useState } from 'react'
import { useNavigate } from 'react-router-dom'
import Game from './Game'
import Game2 from './Game2'
export default function Menu() {
const [radio, setRadio] = useState();
// let navigate = useNavigate();
return (
<div>
<div className='title'>
<h1>Tic Tac Toe</h1>
</div>
<div className='board-options'>
<div>Choose Board Size: {radio}</div>
<div className="size-options">
<form>
<label>
<input type="radio"
name='size'
checked={radio === '3x3'}
value='3x3'
onChange={(e) => {setRadio(e.target.value)}} />
<img src="./images/grid-3.png" alt="grid-3" />
</label>
<label>
<input type="radio"
name='size'
checked={radio === '4x4'}
value='4x4'
onChange={(e) => {setRadio(e.target.value)}} />
<img src="./images/grid-4.png" alt="grid-4" />
</label>
<label>
<input type="radio"
name='size'
checked={radio === '5x5'}
value='5x5'
onChange={(e) => {setRadio(e.target.value)}} />
<img src="./images/grid-5.png" alt="grid-5" />
</label>
<label>
<input type="radio"
name='size'
checked={radio === '6x6'}
value='6x6'
onChange={(e) => {setRadio(e.target.value)}} />
<img src="./images/grid-6.png" alt="grid-6" />
</label>
</form>
<button type='submit' id='start'>START</button>
</div>
</div>
</div>
)
}我试图使用useNavigate的反应路由器-多姆,但它导致菜单功能没有呈现。我希望使用“开始”按钮导航到我选择的游戏文件。
发布于 2021-12-19 11:19:09
您应该将按钮移动到表单中,并且在触发onSubmit事件时可以导航。下面是一个使用您提供的代码的小示例。
import "./styles.css";
import { useState } from "react";
export default function App() {
const [radio, setRadio] = useState();
// let navigate = useNavigate();
const _onSubmit = (e) => {
e.preventDefault();
console.log("On submit navigate...");
};
return (
<div>
<div className="title">
<h1>Tic Tac Toe</h1>
</div>
<div className="board-options">
<div>Choose Board Size: {radio}</div>
<div className="size-options">
<form onSubmit={_onSubmit}>
<label>
<input
type="radio"
name="size"
checked={radio === "3x3"}
value="3x3"
onChange={(e) => {
setRadio(e.target.value);
}}
/>
<img src="./images/grid-3.png" alt="grid-3" />
</label>
<label>
<input
type="radio"
name="size"
checked={radio === "4x4"}
value="4x4"
onChange={(e) => {
setRadio(e.target.value);
}}
/>
<img src="./images/grid-4.png" alt="grid-4" />
</label>
<label>
<input
type="radio"
name="size"
checked={radio === "5x5"}
value="5x5"
onChange={(e) => {
setRadio(e.target.value);
}}
/>
<img src="./images/grid-5.png" alt="grid-5" />
</label>
<label>
<input
type="radio"
name="size"
checked={radio === "6x6"}
value="6x6"
onChange={(e) => {
setRadio(e.target.value);
}}
/>
<img src="./images/grid-6.png" alt="grid-6" />
</label>
<button type="submit" id="start">
START
</button>
</form>
</div>
</div>
</div>
);
}https://stackoverflow.com/questions/70410809
复制相似问题