【问题标题】:How to capture bootstrap dropdown values in react without third-party libraries?如何在没有第三方库的情况下捕获引导下拉值?
【发布时间】:2022-01-13 17:04:41
【问题描述】:

我在我的 React 应用程序中使用没有第三方库(如 react-bootstrap 或 ...)的 bootstrap 5.1。 我能够看到下拉按钮在我的反应应用程序上正常工作,但我无法捕获选择不同下拉选项的值。我试图用<option value='...'> 替换<a> 标签,但没有成功。有什么想法吗?

<div class="dropdown">
  <a class="btn btn-secondary dropdown-toggle" href="#" role="button" id="dropdownMenuLink" data-bs-toggle="dropdown" aria-expanded="false">
    Dropdown link
  </a>

  <ul class="dropdown-menu" aria-labelledby="dropdownMenuLink">
    <li><a class="dropdown-item" href="#">Action</a></li>
    <li><a class="dropdown-item" href="#">Another action</a></li>
    <li><a class="dropdown-item" href="#">Something else here</a></li>
  </ul>
</div>

【问题讨论】:

    标签: reactjs bootstrap-5


    【解决方案1】:

    a 标签不支持 value 属性 (https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a)。

    同样,option 标签也不能没有select/datalist/optgroup (https://developer.mozilla.org/en-US/docs/Web/HTML/Element/option)。

    如果您仍然需要与标签关联的某种类型的值,请使用类似:data-value={your_value}。然后使用被点击元素的数据集。

    【讨论】:

      【解决方案2】:

      你可以试试下面的代码

      export default function App() {
        const onChangeClick = (value) => {
          console.log(value);
        };
        return (
          <div class="dropdown">
            <a
              class="btn btn-secondary dropdown-toggle"
              href="#"
              role="button"
              id="dropdownMenuLink"
              data-bs-toggle="dropdown"
              aria-expanded="false"
            >
              Dropdown link
            </a>
      
            <ul class="dropdown-menu" aria-labelledby="dropdownMenuLink">
              <li>
                <a
                  class="dropdown-item"
                  href="#"
                  onClick={() => onChangeClick("action")}
                >
                  Action
                </a>
              </li>
              <li>
                <a
                  class="dropdown-item"
                  href="#"
                  onClick={() => onChangeClick("another action")}
                >
                  Another action
                </a>
              </li>
              <li>
                <a
                  class="dropdown-item"
                  href="#"
                  onClick={() => onChangeClick("else action")}
                >
                  Something else here
                </a>
              </li>
            </ul>
          </div>
        );
      }
      

      【讨论】:

      • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
      • 感谢您的回复,但我认为为每个元素渲染多个onClick会降低应用程序的优化级别,并且不是正确的方法。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-21
      • 1970-01-01
      • 2012-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-14
      相关资源
      最近更新 更多