在反应 bootstrap 下拉按钮中显示第一个选择的项目

Show first selected item in the react bootstrap dropdown button

我想在页面呈现时显示包含第一个项目的下拉列表。 取而代之的是,我可以看到下拉列表的标题。如何显示列表中的第一项。

加载数组列表需要一些时间,有什么方法可以等待值可用并显示它吗?

  const [selectedElement, setSelectedElement] = useState(
    list.length != 0 ? list[0].name : ''
  );

  const handleSelect = e => {
    setSelectedElement(e);
    console.log('cdets--' + cdetsValue);
  };

        <DropdownButton
          id="dropdown-basic-button"
          variant="info"
          className="floatRight"
          onSelect={handleSelect}
          title={selectedElement}
        >
          {list.map((value, i) => {
            return (
              <Dropdown.Item key={i} eventKey={value.name}>
                {value.name}
              </Dropdown.Item>
            );
          })}
        </DropdownButton>

您可以像这样将 active 道具传递给 Dropdown.Item :

   <DropdownButton
      id="dropdown-basic-button"
      variant="info"
      className="floatRight"
      onSelect={handleSelect}
      title="Select list"
    >
      {list.map((value, i) => {
        return (
          <Dropdown.Item active={i === 0 ? true : false} key={i} eventKey={value.name}>
            {value.name}
          </Dropdown.Item>
        );
      })}
    </DropdownButton>

条件基本上是如果项目索引为 0,即第一个项目,则它将处于活动状态并被选中。

实际上您将下拉菜单用作 select。您可以使用 select 来达到这个目的,但是当您要求下拉列表时,我附上了下面的代码。

import { useState } from "react";
import { DropdownButton, Dropdown } from "react-bootstrap";
import "./styles.css";

const list = [
  { key: "Yellow", value: "yellow" },
  { key: "Blue", value: "blue" },
  { key: "Green", value: "green" }
];

export default function App() {
  const [selected, setSelected] = useState({});
  const handleSelect = (key, event) => {
    setSelected({ key, value: event.target.value });
  };

  return (
    <div className="App">
      <h1>Hello CodeSandbox</h1>
      <DropdownButton
        id="dropdown-basic-button"
        variant="info"
        className="floatRight"
        onSelect={handleSelect}
        title={selected?.key || list[0].key}
      >
        {list.map((item, index) => {
          return (
            <Dropdown.Item key={index} eventKey={item.key}>
              {item.value}
            </Dropdown.Item>
          );
        })}
      </DropdownButton>
      <h2>Start editing to see some magic happen!</h2>
    </div>
  );
}