在 react-select 中更改选定的值组件

lwi*_*win 4 reactjs react-select

有什么方法可以更改选定的值组件设计,在我的选项菜单中,我显示 CscId 和 CscDesc 但是当我选择该选项时,我只想显示 CscId。有什么方法可以更改选定的值组件吗?我用谷歌搜索了这个,已经花了 1 天。请帮我。

在此处输入图片说明

这是我的反应选择

import React  from "react";
import Select from 'react-select';

const costcenterselect = ({ value, onChange, id, datasource }) => {    
  const formatOptionLabel = ({ CscID, CscDesc }) => (            
    <div style={{ display: "flex"}}>
      <div style={{width:'40%'}}>{CscID}</div>                
      <div>{CscDesc}</div>                
    </div>
  );  

  return (
    <div>
      <Select 
        id={id}
        menuIsOpen={true}    
        formatOptionLabel={formatOptionLabel}
        getOptionValue={option => `${option.CscID}`}
        options={datasource}
        onChange={onChange}
        defaultValue={value}        
      />
    </div>           
  )
}

export default costcenterselect;
Run Code Online (Sandbox Code Playgroud)

ron*_*4ex 11

你可以用formatOptionLabel它自己来做。它有第二个参数,为您提供元信息,如context您可以用来有条件地呈现。这是一个工作演示

您可以看到context === value允许您在渲染context === menu选项的同时渲染选定的值。

const formatOptionLabel = ({ CscID, CscDesc }, { context }) => {
    if (context === "value") {
      return <div>{CscID}</div>;
    } else if (context === "menu") {
      return (
        <div style={{ display: "flex" }}>
          <div style={{ width: "40%" }}>{CscID}</div>
          <div>{CscDesc}</div>
        </div>
      );
    }
  };
Run Code Online (Sandbox Code Playgroud)