将自定义组件作为触发器传递时,Semantic 的 Popup 不显示

Semantic's Popup does not show up when passing a custom component as trigger

我只是想制作一个带有可选 popupContent 的切换按钮组件,以仅呈现按钮或将其放在 <Popup /> 组件内 (semantic-ui-react) ,即在悬停时显示工具提示。我 运行 遇到一个问题,如果我在 Popuptrigger 道具中定义按钮,但如果我将按钮放入一个单独的组件并将其传递给道具,我的组件将正常工作.

工作示例:

return (
  <Popup
    content={popupContent}
    trigger={
      <Button onClick={updateFilters} size="mini" icon basic={!active} primary={active}>
        <Icon name="filter" />
      </Button>
    }
  />
)

我想做的事情 - 否则有效但弹出窗口不显示:

const Toggle = () => (
  <Button onClick={updateFilters} size="mini" icon basic={!active} primary={active}>
    <Icon name="filter" />
  </Button>
)

return popupContent ? <Popup content={popupContent} size="mini" trigger={<Toggle />} /> : <Toggle />

请注意,我已经在没有三元的情况下尝试过;它不是罪魁祸首。我在这里错过了什么?

原来问题与这个问题有关:https://github.com/Semantic-Org/Semantic-UI-React/issues/1413

解决方案是将 trigger 节点包裹在 <div> 中(对我来说,<span> 弄乱了工具提示的定位)。

return popupContent ? (
  <Popup
    content={popupContent}
    size="mini"
    trigger={
      <div>
        <Toggle />
      </div>
    }
  />
) : (
  <Toggle />
)

您的解决方案不正确,自定义组件的“问题”是您没有传播传递的道具。

Popup 组件正在将道具传递给它应该处理的触发器组件,当你不处理它们时,它不会工作:]。

将您的自定义 Toggle 更改为如下内容:

const Toggle = (props) => (
  <Button
    {...props}
    onClick={() => console.log("button-clicked")}
    size="mini"
    icon="filter"
    basic={true}
    primary={true}
  />
);

一个工作示例:https://codesandbox.io/s/semantic-ui-react-forked-0ftrc?file=/index.js