在为我的React应用构建反应路线时,错误会显示
分析错误:相邻的JSX元素必须包装在一个封闭的标记中。
下面是我的代码
class App extends Component {
render () {
return (
//Make App Running within Browser Router//
<BrowserRouter>
<div className="navbar">
<Navbar />
<Route exact path='/' component={Home} />
<Route path='/chat' component={Chat} />
<Route path='/about' component={About} />
</div>
</BrowserRouter>
<div className="main-container"> **==> This is when problem show**
<Searchapp />
</div>
);
}
}
export default App;
谢谢
答案 0 :(得分:1)
您必须使用父节点封装JSX。您可以使用div元素,或者如果您不想在DOM中添加额外的元素,则可以使用React Fragment <>
class App extends Component {
render () {
return (
<>
<BrowserRouter>
<div className="navbar">
<Navbar />
<Route exact path='/' component={Home} />
<Route path='/chat' component={Chat} />
<Route path='/about' component={About} />
</div>
</BrowserRouter>
<div className="main-container"> **==> This is when problem show**
<Searchapp />
</div>
</>
);
}
}
export default App;
答案 1 :(得分:0)
我们不允许将多个JSX元素分配给一个变量,这是无效的JavaScript语法。
您尝试将某些同级元素彼此相邻放置,但必须有一个外部标记,但是如果添加一个额外的<div>
标记会导致样式丢失呢?
因此,先前提供的答案称为React.Fragment
,它是一个JSX外观元素,可让您将多个元素分配给单个变量,但是在渲染到屏幕时,它将不会对DOM产生任何可见元素
它看起来像这样:
const ObjectDelete = () => {
const actions = (
<React.Fragment>
<button className="ui button negative">Delete</button>
<button className="ui button">Cancel</button>
</React.Fragment>
);
基本上是长形,可以像这样缩短:
const ObjectDelete = () => {
const actions = (
<>
<button className="ui button negative">Delete</button>
<button className="ui button">Cancel</button>
</>
);
或者自从您介绍了课程组件后,它对您是否更有帮助:
class ObjectDelete extends React.Component {
renderActions() {
return (
<React.Fragment>
<button className="ui button negative">Delete</button>
<button className="ui button">Cancel</button>
</React.Fragment>
);
}
请注意,此时带有<React.Fragment>
的JSX已包含在一个辅助函数中。