React Bootstrap OverlayTrigger и проблема с всплывающей подсказкой

Я пытаюсь использовать реакцию-загрузку OverlayTrigger и всплывающую подсказку внутри средства форматирования для реакции-загрузки-таблицы и продолжаю получать следующую ошибку:

Единственная необходимая поддержка OverlayTrigger — это оверлей, который должен быть узлом, а единственная необходимая поддержка Tooltip — это 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>
  );
};

person philjestin    schedule 26.04.2016    source источник


Ответы (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>);
};      

Затем, когда я вызываю параметр dataFormat TableHeaderColumn:

<TableHeaderColumn dataField="comment" dataFormat={this.tooltipFormatter}>TableHeader</TableHeaderColumn>
person Neau Adrien    schedule 19.07.2016

Вполне вероятно, что либо submitter, либо toolTipInstance имеют значение null/undefined или один из них представляет собой массив из более чем 1 компонента.

person Matt Miller    schedule 03.05.2016