#reactjs #react-select
Вопрос:
Я пытаюсь открыть меню выбора, когда вы нажимаете на значок. Как я могу это сделать в react ? Это код, И я хочу удалить выбор по умолчанию, который я просто хочу, когда вы нажимаете значок, чтобы открыть react-select
/* eslint-disable @typescript-eslint/no-unused-vars */
import Select, { components } from "react-select";
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
import { useEffect, } from "react";
interface Props {
avatarObj: any;
// initalAvatarObj: any;
avatarSvg?: any;
// initialAvatarSvg?: any;
}
const CustomizeAvatar: React.FC<Props> = ({ avatarObj, avatarSvg }) => {
const options = [
{ value: 'chocolate', label: 'Chocolate' },
{ value: 'strawberry', label: 'Strawberry' },
{ value: 'vanilla', label: 'Vanilla' }
]
return (
<div className="relative flex items-center justify-center h-64 w-full">
<div className="w-36" dangerouslySetInnerHTML={{ __html: avatarSvg }} />
<FontAwesomeIcon icon='hat-cowboy' className="absolute top-1" />
<div className="absolute top-7">
<Select
className="w-23"
options={options}
/>
</div>
</div>
)
};
export default CustomizeAvatar;
Ответ №1:
Вам нужно государство, чтобы контролировать это.
const [open, setOpen] = useState(false)
<FontAwesomeIcon icon='hat-cowboy' className="absolute top-1" onClick={() => setOpen(!open)} />
{open amp;amp; <Select
className="w-23"
options={options}
menuIsOpen={open}
placeholder=""
/>}
Комментарии:
1. Это не заменяет выпадающий значок, который запрашивает операция
2.
I'm trying to open select when you click on the icon.
3.
And i want to remove de default select i just want when you click icon to open the react-select
, может быть, ты пропустил эту часть?4.
remove de default select
не удалять значок5. Я вижу
i
послеdefault select
как иконку lol, но да, может быть, я ошибаюсь 🙂
Ответ №2:
Мне удалось решить эту проблему самостоятельно, вам пришлось изменить стили по умолчанию, как в этой демонстрации здесь: https://gyazo.com/9fa746ce88c70272e264b0d040c40212
/* eslint-disable @typescript-eslint/no-unused-vars */
import Select from "react-select";
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
import { useRef, useState } from "react";
interface Props {
avatarObj: any;
// initalAvatarObj: any;
avatarSvg?: any;
// initialAvatarSvg?: any;
}
const CustomizeAvatar: React.FC<Props> = ({ avatarObj, avatarSvg }) => {
const selectRef = useRef<any>({});
const [openMenu, setOpenMenu] = useState(false);
const [open, setOpen] = useState(false)
const options = [
{ value: 'chocolate', label: 'Chocolate' },
{ value: 'strawberry', label: 'Strawberry' },
{ value: 'vanilla', label: 'Vanilla' }
]
const customStyles = {
option: (provided: any, state: { isSelected: any }) => ({
...provided,
borderBottom: '1px dotted pink',
color: state.isSelected ? 'red' : 'blue',
width: 200,
}),
container: () => ({
width: 200,
}),
control: () => ({
border: "none",
display: "none",
width: 0,
}),
};
return (
<div className="relative flex items-center justify-center h-64 w-full" onClick={() => setOpen(!open)} >
<FontAwesomeIcon icon='hat-cowboy' className="absolute top-1" onClick={() => setOpen(!open)} />
<div className="absolute top-7">
<Select
placeholder=""
styles={customStyles}
options={options}
menuIsOpen={open}
/>
</div>
</div>
)
};
export default CustomizeAvatar;
Комментарии:
1. он помог мне с реквизитом menuIsOpen={открыть}, но я не собираюсь использовать его, потому что у меня будет несколько вариантов выбора, и я буду использовать метод ref и focus (), который я хотел достичь того, что показал в своей демо-версии …
2. это то, что его ответ доза gyazo.com/b468d4098d493e87a490035dc3cef877 и мое: gyazo.com/9fa746ce88c70272e264b0d040c40212