反应选择选择框上的边框颜色

Jim*_*Jim 9 css focus hover reactjs react-select

我目前正在尝试使用反应选择来设置选择框的边框颜色,我已经设法做到了这一点,但由于某种原因,当我激活选择框并将鼠标悬停在选项上时,选择框边框颜色的样式默认返回到蓝色。我似乎无法找到 DOM 中我需要定位的位置来更改此设置。问题是这样的:

当我悬停时,会显示正确的(橙色)边框颜色:

在此输入图像描述

但是,当我将鼠标悬停在选项上时,默认的蓝色会显示在选择框周围。我希望它保持橙色:

在此输入图像描述

这是我对选择框的实现。

const customStyles = {
  control: (provided: Record<string, unknown>) => ({
    ...provided,
    height: 52,
    '&:hover': {
      border: '1px solid #ff8b67',
      boxShadow: '0px 0px 6px #ff8b67',
    },
    '&:focus': {
      border: '1px solid #ff8b67',
      boxShadow: '0px 0px 6px #ff8b67',
    },
  }),
};
export default function CustomControl(): JSX.Element {
  // TODO: select defaultValue by user locale preference possibly
  return (
    <Select
      className="cult-select-box"
      styles={customStyles}
      defaultValue={countriesJSON[0]}
      formatOptionLabel={formatOptionLabel}
      options={countriesJSON}
    />
  );
Run Code Online (Sandbox Code Playgroud)

谁能明白为什么会发生这种情况?

Maj*_* M. 12

您必须StyleConfig从函数导入react-select并将react-states props 作为参数添加到函数中control。最后,使用isFocusedstate. 所以,customStyles应该看起来像:

 const customStyles: StylesConfig = {
 control: (provided: Record<string, unknown>, state: any) => ({
    ...provided,
    height: 52,
    border: state.isFocused ? "1px solid #ff8b67" : "1px solid #cccccc",
    boxShadow: state.isFocused ? "0px 0px 6px #ff8b67" : "none",
    "&:hover": {
      border: "1px solid #ff8b67",
      boxShadow: "0px 0px 6px #ff8b67"
    }
  })
};
Run Code Online (Sandbox Code Playgroud)

编辑反应选择 TypeScript 动物(分叉)