【问题标题】:Adjacent JSX Elements must be wrapped in an enclosing tag reactjs [duplicate]相邻的 JSX 元素必须包含在封闭标记 reactjs [重复]
【发布时间】:2019-02-09 02:09:19
【问题描述】:

相邻的 JSX 元素必须被封装在一个封闭标签 reactjs 中

我的代码有什么问题??

这样的错误代码调用:

相邻的 JSX 元素必须包含在封闭标记中

元素标签中的代码错误

const renderTodos = currentTodos.map((todo, index) => {
  return <table style={{ width: '100%', maxWidth: '100%', padding: '1%' }} >
	   <tbody>
		    <tr>
			     <td style={{ width: '70%', padding: '2%' }}> 
              <span style={title}>
                 <b>
                   <Link to={`/berita/${todo.id}`} style={{ color: 'black' }}> 
                       {todo.title} 
                   </Link>
                   </b>
                   </span> 
                   <p> 
                    {todo.content=todo.content.replace(regex, '').substring(0, 150)} 
                     <a href="/">...Read More </a>
                         </p> 
                                <p style={content}>
                                     By <i> {todo.author ? todo.author : this.props.default} </i> 
                                </p>
                                <p style={content}> 
                                     <Moment date={todo.created_date} />  
                                </p>
                            </td>
			                <td style={{ width: '30%' }}>                                  
                                 <img 
                                    src={todo.link_image} 
                                    alt="" 
                                    className={responsive_image__image}
                                    style={responsive_image}
                                 /> 
                            </td>
		                </tr>
	                </tbody>
                </table>;
                
            <BrowserRouter>
                <div>    
                    <Switch>
                        <Route path="/berita/:id" component={BeritaView} /> 
                    </Switch>
                </div>
            </BrowserRouter>
    });

【问题讨论】:

  • 错误信息非常不言自明,而且这个问题已经在这个网站上被问和回答了很多次。将组件包装在单个根元素中或使用片段。并且至少在发布 SO 帖子之前搜索您的错误消息,答案是第一个结果。
  • @Jayce444 表示在标签 之前我包装标签
    ??
  • 看看下面 Leo 的回答,他向你展示了如何将它们包装在一个 div 中

标签: javascript html reactjs


【解决方案1】:

在 React 中,我们必须返回单个元素。在您的情况下,您可以使用 div 或 React.Fragment

包装它

const renderTodos = currentTodos.map((todo, index) => {
  return (<div> 
   <table style={{ width: '100%', maxWidth: '100%', padding: '1%' }} >
	   <tbody>
		    <tr>
			     <td style={{ width: '70%', padding: '2%' }}> 
              <span style={title}>
                 <b>
                   <Link to={`/berita/${todo.id}`} style={{ color: 'black' }}> 
                       {todo.title} 
                   </Link>
                   </b>
                   </span> 
                   <p> 
                    {todo.content=todo.content.replace(regex, '').substring(0, 150)} 
                     <a href="/">...Read More </a>
                         </p> 
                                <p style={content}>
                                     By <i> {todo.author ? todo.author : this.props.default} </i> 
                                </p>
                                <p style={content}> 
                                     <Moment date={todo.created_date} />  
                                </p>
                            </td>
			                <td style={{ width: '30%' }}>                                  
                                 <img 
                                    src={todo.link_image} 
                                    alt="" 
                                    className={responsive_image__image}
                                    style={responsive_image}
                                 /> 
                            </td>
		                </tr>
	                </tbody>
                </table>
                
            <BrowserRouter>
                <div>    
                    <Switch>
                        <Route path="/berita/:id" component={BeritaView} /> 
                    </Switch>
                </div>
            </BrowserRouter>
        </div>)
    });

【讨论】:

  • 如果我想在 标签上方输入一个变量,我会收到一条错误消息意外令牌...为了不出现错误,解决方案是什么?
  • @NadziefHÿuga,直到我看到代码我才知道:)
  • 让我们看看你评论底部的代码..谢谢你的帮助
  • @NadziefHÿuga 你不能在 JSX 中创建变量。我认为你应该通读 React 文档
  • 如果我想通过从 API 获取 ID 进行路由,除了上述方法之外还有其他方法吗?
猜你喜欢
相关资源
最近更新 更多
热门标签