React Bootstrap OverlayTrigger 和工具提示错误

IT技术 reactjs ecmascript-6 react-bootstrap
2021-05-24 17:16:00

我正在尝试在 react-bootstrap-table 的格式化程序中使用 react-bootstrap OverlayTrigger 和 Tooltip 并不断收到以下错误:

OverlayTrigger 唯一需要的props是overlay,它应该是一个节点,而工具提示唯一需要的props是id(尽管他们的例子没有显示你需要一个ID),它需要是一个字符串。

“onlyChild 必须传递给只有一个孩子的孩子。”

相关代码如下所示:

import {Button, DropdownButton, MenuItem, Modal,
    OverlayTrigger, Tooltip} from 'react-bootstrap';

....

const submitterFormatter = (submitter, row) => {
  return (
    <OverlayTrigger placement="bottom" overlay={toolTipComponent(submitter, row)}>
      {submitter}
    </OverlayTrigger>
  );
};

const toolTipComponent = (toolTipText, row) => {
  return (
    <Tooltip id={String(row.id)}>
      {toolTipText}
    </Tooltip>
  );
};

我也为 submitterFormatter 尝试了以下方法

const submitterFormatter = (submitter, row) => {
  return (
    const toolTipInstance = toolTipComponent(submitter, row);
    <OverlayTrigger placement="bottom" overlay={toolTipInstance}>
      {submitter}
    </OverlayTrigger>
  );
};
2个回答

我有同样的问题。我无法解释为什么,但我只是通过在 OverlayTrigger 标签中添加一个标签来解决。我的格式化程序函数在 React 类中。

我的解决方案:

tooltipFormatter(cell, row){
    return (<OverlayTrigger placement="right" overlay={<Tooltip id={String(row.id)}>{cell}</Tooltip>}><span>{cell}</span></OverlayTrigger>);
};

在这里,span 标签解决了这个问题。

如果我调整您的代码,这是解决方案:

submitterFormatter(submitter, row){
    return (<OverlayTrigger placement="bottom" overlay={<Tooltip id={String(row.id)}>{submitter}</Tooltip>}><span>{submitter}</span></OverlayTrigger>);
};      

然后,当我调用 TableHeaderColumn 的 dataFormat 参数时:

<TableHeaderColumn dataField="comment" dataFormat={this.tooltipFormatter}>TableHeader</TableHeaderColumn>

提交者或 toolTipInstance 可能为空/未定义,或者其中之一是包含 1 个以上组件的数组。