React代码标签未闭合错误排查求助(Hackathon场景)
React标签未闭合及语法错误修复方案
你的代码存在标签未闭合、React语法不兼容、多余语法残留等问题,以下是具体修复点和完整修复后的代码:
核心错误点
- 第14行的
<a>标签未闭合就直接跳转至form标签,导致后续DOM嵌套结构完全混乱 - 开头的
<div class="container">和内部<footer>标签未闭合就开始form代码,破坏了页面层级 - React中必须用
className替代HTML的class属性,避免与JavaScript关键字冲突 - 不能直接使用Jinja模板语法
{{ url_for('xxx') }},需替换为静态路径或React路由链接 - input标签在JSX中应为自闭合格式(
<input ... />),无需额外的</input>标签 - 函数末尾存在多余的
); }语法残留,需删除
修复后的完整代码
import React from "react"; import Navbar from "./navbar"; // import Footer from "./footer"; function Questions() { return ( <div> {/* Q&A PAGE */} {/* Navigation Bar */} <Navbar /> <div className="container"> <footer className="py-3 my-4"> <ul className="nav justify-content-center border-bottom pb-3 mb-3"> <li className="nav-item"> <a href="/home" className="nav-link px-2 text-body-secondary">Home</a> </li> </ul> </footer> </div> <form action="#" method="post"> {/* Asks for name of the person */} <p style={{ marginLeft: "50px" }}> name </p> <p style={{ marginLeft: "50px" }}> <input type="text" name="name" /> </p> <p style={{ marginLeft: "50px" }}> Race </p> <ul> <p style={{ marginLeft: "50px" }}> <input type="checkbox" name="race" value="Black" /> Black </p> <p style={{ marginLeft: "50px" }}> <input type="checkbox" name="race" value="East_Asian" /> East Asian </p> <p style={{ marginLeft: "50px" }}> <input type="checkbox" name="race" value="Latinx" /> Latinx </p> <p style={{ marginLeft: "50px" }}> <input type="checkbox" name="race" value="South_Asian" /> South Asian </p> <p style={{ marginLeft: "50px" }}> <input type="checkbox" name="race" value="South_Asian" /> South Asian </p> <p style={{ marginLeft: "50px" }}> <input type="checkbox" name="race" value="White" /> White </p> </ul> <p style={{ marginLeft: "50px" }}> Gender </p> <ul> <p style={{ marginLeft: "50px" }}> <input type="checkbox" name="gender" value="Male" /> Male </p> <p style={{ marginLeft: "50px" }}> <input type="checkbox" name="gender" value="Female" /> Female </p> <p style={{ marginLeft: "50px" }}> <input type="checkbox" name="gender" value="Non-binary" /> Non-binary </p> </ul> <p style={{ marginLeft: "50px" }}> Sexuality </p> <ul> <p style={{ marginLeft: "50px" }}> <input type="checkbox" name="sexuality" value="Gay/Lesbian" /> Gay/Lesbian </p> <p style={{ marginLeft: "50px" }}> <input type="checkbox" name="sexuality" value="Bisexual" /> Bisexual </p> <p style={{ marginLeft: "50px" }}> <input type="checkbox" name="sexuality" value="Queer" /> Queer </p> <p style={{ marginLeft: "50px" }}> <input type="checkbox" name="sexuality" value="Intersex" /> Intersex </p> <p style={{ marginLeft: "50px" }}> <input type="checkbox" name="sexuality" value="Asexual" /> Asexual </p> </ul> <p style={{ marginLeft: "50px" }}> Religion </p> <ul> <p style={{ marginLeft: "50px" }}> <input type="checkbox" name="religion" value="Athiest" /> Athiest </p> <p style={{ marginLeft: "50px" }}> <input type="checkbox" name="religion" value="Hindu" /> Hinduism </p> <p style={{ marginLeft: "50px" }}> <input type="checkbox" name="religion" value="Islam" /> Islam </p> <p style={{ marginLeft: "50px" }}> <input type="checkbox" name="religion" value="Christianity" /> Christianity </p> <p style={{ marginLeft: "50px" }}> <input type="checkbox" name="religion" value="Agnostic" /> Agnostic </p> <p style={{ marginLeft: "50px" }}> <input type="checkbox" name="religion" value="Buddhism" /> Buddhism </p> <p style={{ marginLeft: "50px" }}> <input type="checkbox" name="religion" value="Judaism" /> Judaism </p> <p style={{ marginLeft: "50px" }}> <input type="checkbox" name="religion" value="Sikhism" /> Sikhism </p> </ul> <p style={{ marginLeft: "50px" }}> <input type="submit" value="Submit" /> </p> </form> {/* FOOTER */} <div className="container"> <footer className="py-3 my-4"> <ul className="nav justify-content-center border-bottom pb-3 mb-3"> <li className="nav-item"> <a href="/home" className="nav-link px-2 text-body-secondary">Home</a> </li> <li className="nav-item"> <a href="/trending" className="nav-link px-2 text-body-secondary">Trending</a> </li> <li className="nav-item"> <a href="/response" className="nav-link px-2 text-body-secondary">Book Lists</a> </li> <li className="nav-item"> <a href="/questions" className="nav-link px-2 text-body-secondary">Q&A</a> </li> </ul> <p className="text-center text-body-secondary">© Book Website's name</p> </footer> </div> </div> ); } export default Questions;
额外说明
- 如果你使用React Router,建议将
<a>标签替换为<Link>组件,避免页面全量刷新 - style属性在JSX中必须用对象格式(
style={{ marginLeft: "50px" }}),已统一修改 - 提交按钮的value从"value"改为"Submit",更符合用户操作习惯
内容的提问来源于stack exchange,提问作者Nur
相关产品推荐
相关产品推荐

