如何有条件地渲染自定义 React Select 下拉指示器的 SVG 颜色 [复制]

How to Conditionally Render SVG Color of Custom React Select Drop Down Indicator [duplicate]

提问人:Jake Matthews 提问时间:11/15/2023 最后编辑:trincotJake Matthews 更新时间:11/15/2023 访问量:29

问:

我正在尝试将我的自定义 SVG 下拉指示器的颜色更改为其默认颜色,在悬停和 isMenuOpen/isFocused 时。

我目前有一个用于下拉指示器的组件,试图在那里应用颜色,如下所示:

 const CustomDropdownIndicator = (props, state) => {
        const isFocused = state.isFocused;
        const isHovered = state.isHovered;

        const defaultColor = '#5f6368';
        const hoverColor = '#202124';
        const focusedColor = '#1a73e8';

        const color = isFocused ? focusedColor : isHovered ? hoverColor : defaultColor;
            

        return (
            <components.DropdownIndicator {...props} style={{ color }}>
                    <img src={dropDownImageSVG} alt="Dropdown Indicator" />
            </components.DropdownIndicator>
        );
    };

我还尝试在我的customStyles对象中对它应用填充值:

const customStyles = {
        //more styles
        dropdownIndicator: (provided, state)=> ({
            ...provided,
            width: '32.5px', // Adjust the width to fit your image
            height: '20px', // Adjust the height to fit your image
            transform: state.selectProps.menuIsOpen ? 'rotate(180deg)' : null,
            padding: '0px',
            justifyContent: 'center',
            fill: 'red !important',
        }),
       // morestyles
    }

这是 Select 组件在我的 React 组件返回中的样子,以及我传递给它的内容:

<Select
                    styles={customStyles}
                    onMenuOpen={() => setIsOpen(true)}
                    onMenuClose={() => setIsOpen(false)}
                    class="flag-drop-down"
                    options={customOptions}
                    components={{ DropdownIndicator: CustomDropdownIndicator}}
                    placeholder={isSelectionMade ? '' : <img
                                                            src={require(`../images/flags/${usersCountryFlagSVG}`)}
                                                            alt="Flag"
                                                            width="24"
                                                            height="16"
                                                        />
                    }
                />

有人对此有解决方案吗?

javascript reactjs svg react-select 填充

评论

0赞 Robert Longson 11/15/2023
我向你指出的答案是可用的。您不能使用 img 上的填充来修改 img 元素的内容,因为 img 数据位于不同的文档中。链接中有很多想法,包括使用过滤器来更改颜色,因此您需要解释为什么这些都不起作用。或者,有两个图像,每个状态一个(其中一个链接的解决方案中也介绍了这一点)。
0赞 Jake Matthews 11/15/2023
@RobertLongson你能重新打开我的问题吗?我已经尝试了这两种解决方案,并尝试根据状态渲染 2 张图像,但由于某种原因没有任何效果。很高兴看到是否有人为这种特定场景提供了解决方案,但尚未得到答复。谢谢
0赞 Robert Longson 11/15/2023
如果您编辑您的问题,它应该重新打开。您可能希望包含您尝试过的无法将其与重复项区分开来的内容。
0赞 Jake Matthews 11/16/2023
@RobertLongson我试过很多......让它保持打开状态会更容易,因为通过在 React Select 组件中使用 react SVG 会改变我问题的解决方案......我不知道你为什么这么尴尬......

答: 暂无答案