javascript - React <div> 不能作为 <tr> 警告的子项出现

标签 javascript html reactjs

我在 React 组件中收到以下警告:

enter image description here

相关代码如下:

import React, { PropTypes } from 'react';
import { Checkbox } from 'react-bootstrap'; 

const MyComponent = (params) => {

function onSelect(event) {
    params.onSelect(event, params.data.id);
}

return (
    <tr key={params.data.id}>
        {params.isSelectable ? (
            <Checkbox onChange={onSelect}>
                <td>{params.data.firstName}&nbsp;</td>
                <td>{params.data.lastName}&nbsp;</td>
            </Checkbox>
        ) : (
            <div>
                <td>{params.data.firstName}&nbsp;</td>
                <td>{params.data.lastName}&nbsp;</td>
            </div>
        )}
    </tr>
);

};

如果我删除 div 标签,我会收到以下错误:

Adjacent JSX elements must be wrapped in an enclosing tag

我是 React 的新手,所以我不太清楚这里发生了什么。有什么问题,我该如何解决?

更新:我的 React 版本是 15.3.2。

最佳答案

如果您需要返回多个元素并且不能有包装器(例如在本例中),那么从 React 16.2 开始您有一个新选项。 Fragments :

<React.Fragment>
  <td>{params.data.firstName}&nbsp;</td>
  <td>{params.data.lastName}&nbsp;</td>
</React.Fragment>

或者,您可以将其简化为:

<>
  <td>{params.data.firstName}&nbsp;</td>
  <td>{params.data.lastName}&nbsp;</td>
</>

片段不会解析为任何 HTML 元素,因此 <td> s 将是您的直系子女 <tr> .

关于javascript - React <div> 不能作为 <tr> 警告的子项出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47911216/

相关文章:

html - 保持 float 元素在底部

android - 无法从 Assets 'index.android.bundle' 加载脚本。确保你的包被正确打包或者你正在运行一个打包服务器

reactjs - componentDidUpdate 没有触发

html - 非常非常简单 - CSS 定位 - 我做错了什么?

javascript - useContext 给出错误无法读取未定义的属性 '...'

javascript - 如何使用字符串原型(prototype)的自定义创建方法?

javascript - 目标为 ="_blank"的表单 - 新窗口和加载页面

Javascript 选择更改不会第一次尝试触发

javascript - 无限(可滚动)Div,没有任何带有 Javascript/JQuery 的插件

jquery - 恒星 js 不工作