请问antd/dropdown想要对button点击弹出,应该怎么写呢?

在阅读antd dropdown文档的时候,

我看到代码都是这样写的:

const App: React.FC = () => (
  <Dropdown menu={{ items }} trigger={['click']}>
    <a onClick={(e) => e.preventDefault()}>
      <Space>
        Click me
        <DownOutlined />
      </Space>
    </a>
  </Dropdown>
);

请问,现在比如有一个button:

<button
  onClick={() => {
    // 想要在这里进行弹出dropdown
  }}
></button>

想要点击button弹出dropdown,请问如何进行写呢?

阅读 1.7k
avatarAI BotBETA

你可以将Dropdown组件放在button的onClick事件处理函数中,这样当button被点击时,Dropdown就会弹出来。以下是示例代码:

import { Dropdown, Button } from 'antd';

const App: React.FC = () => {
  const onButtonClick = () => {
    // 弹出Dropdown
    <Dropdown menu={{ items }} trigger={['click']}>
      <a onClick={(e) => e.preventDefault()}>
        <Space>
          Click me
          <DownOutlined />
        </Space>
      </a>
    </Dropdown>
  }

  return (
    <div>
      <Button onClick={onButtonClick}>点击弹出Dropdown</Button>
    </div>
  );
}

export default App;

在这个例子中,当点击"点击弹出Dropdown"这个button时,Dropdown就会显示出来。你可以根据你的需求,将menu={{ items }}trigger={['click']}替换成你自己的设置。

3 个回答
✓ 已被采纳

你可以将 Dropdown 变成受控组件,即使用 open 属性控制 Dropdown 的展开和收起。

const App: React.FC = () => {
  const [open, setOpen] = useState(false);
  return (
    <>
      <button
        onClick={() => {
          setOpen((v) => !v);
        }}
      >
        Click
      </button>
      <Dropdown menu={{ items }} trigger={["click"]} open={open}>
        <a onClick={(e) => e.preventDefault()}>
          <Space>
            Click me
            <DownOutlined />
          </Space>
        </a>
      </Dropdown>
    </>
  );
};

希望对你有所帮助!

Dropdown的显示由open参数控制(4.23.0 以下为visible)。
看文档不应该只看例子,更要看 API 表格,AntD 的组件 API 放在了文档末尾:下拉菜单 Dropdown
另外像 PopoverTooltip 之类的组件,由于 API 列表内容存在包含关系,共用的 API 会放在另一个组件的 API 表格里面:
图片.png

上面的通用属性也是 API 的一部分,不过只有一个属性是通用的。
const App: React.FC = () => {
  const [open, setOpen] = useState(false);
  return (
    <>
      <button onClick={() => void setOpen(true)}>
        shwo dropdown
      </button>
      <Dropdown
        onOpenChange={(event) => void setOpen(event)}
        menu={{ items }}
        trigger={["click"]}
        open={open}
      >
        <a onClick={(e) => e.preventDefault()}>
          <Space>
            Click me
            <DownOutlined />
          </Space>
        </a>
      </Dropdown>
    </>
  );
};
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题