如何在动态子按钮上附加关闭功能?

Posted

技术标签:

【中文标题】如何在动态子按钮上附加关闭功能?【英文标题】:How to attach close function on dyanmic children button? 【发布时间】:2021-11-13 10:12:33 【问题描述】:

我有一个 Tooltip 组件,它是动态内容的包装器。

我正在尝试将其用作弹出窗口,其中包含删除和取消按钮。

我将删除和取消按钮作为子属性传递,问题是 cus 关闭和打开状态在 Tooltip 组件中。

我需要在 Children 属性中的 Cancel 按钮上附加关闭功能。

需要帮助才能找到一个优雅的解决方案。

工具提示组件:


export const Tooltip: FC<TooltipProps> = (
  content,
  helperText,
  children,
  ...props
) => 
  const [visible, setVisible] = useState(false);

  const show = () => setVisible(true);
  const hide = () => setVisible(false);

  return (
    <div>
      <Tippy
        content=content
        visible=visible
        onClickOutside=hide
        interactive
        ...props
      >
        <div onClick=visible ? hide : show>
        
          // =====>>> **Close button which be in children prop, need to attach hide() function**
          children

        </div>
      </Tippy>
    </div>
  );
;

这是 Tooltip 组件的调用并将按钮作为子项传递:


 

 <Tooltip
     content=
       <div className="popover-buttons">
          
          // Need to attach here **hide()** function from Tooltip coomponent
          <button>
              Cancel
          </button>
          
           <button>
              Delete
           </button>
        </div>
 </Tooltip>

【问题讨论】:

【参考方案1】:

您可以将传递给Tippy 的内容道具设为一个组件,该组件将hide() 函数作为道具传递给它

export const Tooltip: FC<TooltipProps> = (
  content: Content,
  helperText,
  children,
  ...props
) => 
  const [visible, setVisible] = useState(false);

  const show = () => setVisible(true);
  const hide = () => setVisible(false);

  return (
    <div>
      <Tippy
        content=<Content hide=hide />
        visible=visible
        onClickOutside=hide
        interactive
        ...props
      >
        <div onClick=visible ? hide : show>
        
          // =====>>> **Close button which be in children prop, need to attach hide() function**
          children

        </div>
      </Tippy>
    </div>
  );
;

那么你有:

 <Tooltip
     content= ( hide ) =>
       <div className="popover-buttons">
          
          // Need to attach here **hide()** function from Tooltip coomponent
          <button onClick=hide>
              Cancel
          </button>
          
           <button>
              Delete
           </button>
        </div>
 </Tooltip>

【讨论】:

以上是关于如何在动态子按钮上附加关闭功能?的主要内容,如果未能解决你的问题,请参考以下文章

可以在角度调用父组件功能时单击子组件上的任何按钮? [关闭]

如何在动态 ImageView 上创建动态按钮,同时保持唯一性

如何修改代码 - 弹出窗口,附加关闭选项

如何在本地启动 Azure 功能并通过 launch.json 和 tasks.json 将调试器附加到动态处理?

新升级的火狐浏览器每次启动都弹窗提示更新,检查附加插件和此版本的兼容性,如何关闭?已关闭了自动更新

React:如何将不同类型的子组件动态附加到父组件中?