React函数组件包裹React.Fragment后调用无渲染问题求助
问题排查与修复
你的代码存在两个关键问题导致页面无法渲染:
1. Panch组件的return语句触发自动分号插入
JavaScript的自动分号插入规则会在return后的换行处自动添加分号,导致后续的JSX代码块不会被返回,Panch组件实际返回undefined,自然无法渲染内容。
错误写法:
function Panch () { return ( <React.Fragment> <Dalo/><Dalo/><Dalo/><Dalo/><Dalo/><Dalo/> </React.Fragment> ) }
修复后(将return与左括号放在同一行):
function Panch () { return ( <React.Fragment> <Dalo/><Dalo/><Dalo/><Dalo/><Dalo/><Dalo/> </React.Fragment> ) }
2. HTML根元素标签不符合规范
页面中的根元素写成了大写的<Div>,虽然通过ID查找元素不受标签大小写影响,但HTML标签规范要求小写,建议修正为:
<div id="asdfg"></div>
额外优化(React 18推荐写法)
React 18官方不再推荐使用ReactDOM.render,建议改用createRoot:
const root = ReactDOM.createRoot(document.getElementById("asdfg")); root.render(<Panch />);
完整修复后的代码
<html lang="en"> <head> <script crossorigin src="https://unpkg.com/react@18/umd/react.development.js"></script> <script crossorigin src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script> <script src="https://unpkg.com/@babel/standalone/babel.min.js"></script> </head> <body> <div id="asdfg"></div> </body> <script type="text/babel"> function Dalo() { return ( <h1>bhj</h1> ) } function Panch () { return ( <React.Fragment> <Dalo/><Dalo/><Dalo/><Dalo/><Dalo/><Dalo/> </React.Fragment> ) } const root = ReactDOM.createRoot(document.getElementById("asdfg")); root.render(<Panch />); </script> </html>
内容的提问来源于stack exchange,提问作者Arjun Singh
相关产品推荐
相关产品推荐

