控制选择框中所选值的外观:有没有办法单独渲染所选项目?

2024-01-08

我正在与antd'选择框 https://ant.design/components/select/。我尝试自定义里面的内容Option其中包含常规的text与一些 JSX。它看起来如下:

这也是我在沙箱上准备的小演示:

由于我已经自定义了里面的内容Option,当我使用选择框做出选择时,它会显示为:

正如您所看到的,选择框尝试显示所有内容。有没有办法在使用选择框做出选择后控制选择框的外观?我只想在选择后显示名称。例如,product-1选择第一个选项时必须显示。

为了方便参考,我也将代码贴在这里:

    import React from "react";
import ReactDOM from "react-dom";
import "antd/dist/antd.css";
import "./index.css";
import { Select } from "antd";

const { Option } = Select;

const data = [
  {
    productName: "product-1",
    productExternalId: "DT01A",
    productionExternalId: "PL-DT01A",
    quantity: "700 kg"
  },
  {
    productName: "product-2",
    productExternalId: "DT01A",
    productionExternalId: "PL-DT01A",
    quantity: "700 kg"
  },
  {
    productName: "product-3",
    productExternalId: "DT01A",
    productionExternalId: "PL-DT01A",
    quantity: "700 kg"
  }
];

const ProductSelectBox = React.memo(props => {
  const { details } = props;

  function onSelect(value, option) {
    console.log(value, "..", option);
  }

  function customizedOption({
    productName,
    productExternalId,
    productionExternalId,
    quantity
  }) {
    return (
      <Option
        className="product-select-box-item"
        key={productName}
        value={productName}
      >
        <div className="d-flex flex-column">
          <div className="d-flex" style={{ marginBottom: "0.2rem" }}>
            <div className="mr-auto-1 font-weight-bold">{productName}</div>

            <div className="uppercase">{productionExternalId}</div>
          </div>

          <div className="d-flex" style={{ marginBottom: "0.01rem" }}>
            <div className="mr-auto-1 uppercase">{productExternalId}</div>
            <div>{quantity}</div>
          </div>
        </div>
      </Option>
    );
  }

  return (
    <Select
      // labelInValue
      // defaultValue={{ key: "product-3", label: "product-3" }}
      className="product-select-box"
      size="large"
      onSelect={onSelect}
    >
      {details.map(product => customizedOption(product))}
    </Select>
  );
});

ReactDOM.render(
  <div>
    <ProductSelectBox details={data} />
  </div>,
  document.getElementById("container")
);

参考自你的评论 https://stackoverflow.com/questions/56680158/having-a-tree-structure-on-both-sides-of-the-transfer-component/56858970?noredirect=1#comment100484326_56858970:

要修复您的警告,请在customizedDisplayOnSelection and getSelectedMeta你应该返回一个ReactNode而不是一个string,例如您可以返回null这是一个有效的ReactNode或不返回任何东西。

function customizedDisplayOnSelection(productName) {
  if (productMap[productName]) {
  ...
  }
  // or
  else {
    return null;
  }
}

此外,您还可以利用&&短路。

const customizedDisplayOnSelection = productName =>
  productMap[productName] && (
    <span className="font-weight-medium">
      {productMap[productName].productExternalId} -{productName}
    </span>
  );

检查固定示例:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

控制选择框中所选值的外观:有没有办法单独渲染所选项目? 的相关文章

随机推荐

  • 无法实例化服务:ClassNotFoundException

    我读过大约一百个同一类别的问题 但没有一个有帮助 我有一个工作应用程序 然后重构了包名称 然后编译并运行 一周后 我回来处理它 并在启动时收到 ClassNotFoundException 更糟糕的是 如果我从存储库中签出之前的提交 在任何
  • Ember.js 中的“动态段”?

    在整个 Ember js 文档中 人们发现了这样一个概念 动态段提及在几个地方 https www google de search q site 3Aemberjs com 22dynamic segment 22 这是什么意思 使用适当
  • Swift 3 声音播放

    好吧 我已经研究过这个问题 并尝试了许多不同的方法来在单击按钮时播放声音 在 swift 3 中单击按钮时如何播放声音 我的声音位于名为 Sounds 的文件夹中 名称为 ClickSound mp3 该功能下的用户 MARK PLAY S
  • 在php中的目录中查找特定的文件类型,并在转换后将其发送到不同的目录

    我有一个目录 其中有一个mp4 file 也包括其他文件 我想转换成mp3然后将其发送到不同的目录 我用过以下命令行命令转换成mp3 它工作得很好 ffmpeg i 36031P mp4 map 0 2 ac 1 floor english
  • ICS 不更新组织者日历

    我正在编写一个应用程序 它将发送主要由 Outlook 解释的 ics 文件 当我的应用程序发送更新时 它将成功更新除组织者日历之外的每个人的日历 我使用相同的 UID 并且每次都会递增 SEQUENCE 我的 ICS 文件中是否还缺少其他
  • Oracle + JPA - 使用 INTERVAL 进行查询

    我的数据库表中有一个时间戳列 LASTUPDATED 我通过轮询来决定是否应更新某行 如果记录在过去 10 分钟内没有更新 我会更新它 我想将日期处理委托给数据库 但以下方法均无效 这个说 意外的标记 靠近 Query query enti
  • 如何在选择选项中使用复选框

    客户给了我一个设计 其中有一个选择选项菜单 其中包含一个复选框以及作为列表中单独项目的项目名称 是否可以在 选择选项 菜单中添加一个复选框 注意 开发人员需要添加自己的 id 才能使菜单生效 如果可能的话 我只需要 HTML CSS 代码
  • 为特定密码启用 TLS 1.2

    我们有一个 NET 应用程序调用仅允许 TLS 版本 1 2 的 API 服务器 2008 SP2 我们在服务器上运行以下脚本 Copyright 2016 Alexander Hass http www hass de content s
  • Google PHP 客户端不会验证代码,invalid_request

    我正在使用 Google PHP 客户端 4ae272683e18888362e1f935b813e345b99e23b8 该客户端于 8 月 9 日从 github 中提取 我觉得我的代码太简单了 不会出错 require once Go
  • Set 如何检查重复项? Java哈希集

    对于下面的代码 它输出 1 第二个代码输出 2 我不明白为什么会发生这种情况 是因为我添加了相同的对象吗 我应该如何实现所需的输出2 import java util public class maptest public static v
  • 自定义检查器将值恢复为 Unity 中 Play 上之前的值

    所以在我的游戏中我有一个需要平滑移动的对象Vector3 fromPosition to Vector3 toPosition高速float speed 然后返回到开始的地方 一切都非常简单 但是为了在设置关卡时尝试让生活变得更轻松 我决定
  • 如何使用 Python 3.6 发送电子邮件附件

    你介意帮我一下吗 我使用此页面中的所有代码如何使用Python发送电子邮件附件 https stackoverflow com questions 3362600 how to send email attachments with pyt
  • 如何使用http header发送http请求

    提前致谢 我使用此代码在 http 请求中设置 http 标头来验证 url 但我认为缺少一些东西 这就是为什么我无法得到回复 回应仍然是 需要授权 httpParameters new BasicHttpParams String aut
  • 为 iFrameExtractor 编译 ffmpeg 时出现问题

    我正在尝试使用 make 和 build 文件来编译 ffmpegiFrameExtractor 示例 https github com lajos iFrameExtractor 首先我尝试遵循 github 上的自述文件 该文件只说运行
  • 识别并描述 Scala 的泛型类型约束

    我见过 lt gt
  • 从 Dropbox 目录中提取图像并在网站库中显示

    我正在与一位摄影师客户合作创建一个简单的网站 我希望建立一个从 Dropbox 文件夹中提取的照片库 因此每当她想要更新图库中的图像时 她只需将照片从 Dropbox 文件夹中交换出来 很简单 对吧 有没有办法使用 jQuery 或 PHP
  • 如何将控制台应用程序转换为 .dll?

    我正在尝试将用 C 编写的应用程序转换为 DLL 控制台应用程序接收用户的输入 并通过调用我在项目中导入的服务的方法来重置密码 如何将控制台应用程序转换为 DLL 以便每当用户希望更改密码时就调用我的 DLL 右键单击项目 gt 属性 gt
  • Azure 是否为“cloudapp.net”提供 https?

    使用的一大优点Azure Websites是我无需执行任何操作即可获得安全的 HTTP HTTPS 我只需键入https xyz azurewebsites net它有效 我不必担心证书 因为我使用 Azure 提供的子域 在示例中它将是x
  • 在更新中使用通配符?

    我想浏览一个表 并将 notify4 N 的所有实例更改为 notify5 N 其中 N 是 1 9 之间的数字 有没有办法在 SQL 中做到这一点 在 Perl 中这会很容易 但我不确定客户的服务器上是否有 Perl 您可能正在寻找REG
  • 控制选择框中所选值的外观:有没有办法单独渲染所选项目?

    我正在与antd 选择框 https ant design components select 我尝试自定义里面的内容Option其中包含常规的text与一些 JSX 它看起来如下 这也是我在沙箱上准备的小演示 由于我已经自定义了里面的内容