引用 React Select
Referencing React Select
当我尝试将 React Select 引用到变量中时,我得到的是 StateManager Select 并且 typesctipt 不知道 this.selectRef.current.select 但这个 select 在变量中。更好的解决方案是将 this.selectRef.current.select 重新键入为 Select?
我想通过点击其他元素展开 select。
import Select from "react-select";
interface OwnProps<T> {
alignRight?: boolean;
components?: ComponentsType<T>;
defaultValue?: Value<T>;
disabled?: boolean;
isSearchable?: boolean;
onChange?: DropdownChangeHandler<T>;
onBlur?: React.FocusEventHandler;
options: T[];
placeholder?: string;
value: Value<T>;
menuPortalTarget?: HTMLElement | null;
dataTest?: string;
}
export default class Dropdown<T = Option> extends React.PureComponent<OwnProps<T>> {
static defaultProps = {
isSearchable: false,
};
selectRef: React.RefObject<Select<T>>
constructor(props: OwnProps<T>){
super(props);
this.selectRef = React.createRef();
}
expand = () => {
console.log(this.selectRef)
// this.selectRef.current.select
};
render() {
const {
alignRight,
components,
menuPortalTarget,
defaultValue,
disabled,
isSearchable,
onChange,
options,
onBlur,
placeholder,
value,
dataTest,
} = this.props;
return (
<div data-test={dataTest}>
<Select<T>
components={components}
defaultValue={defaultValue}
isDisabled={disabled}
isSearchable={isSearchable}
menuPortalTarget={menuPortalTarget}
onBlur={onBlur}
onChange={onChange}
options={options}
placeholder={placeholder}
ref={this.selectRef}
value={value}
/>
</div>
);
}
}
更新您对扩展函数的定义,如下所示。并在点击另一个元素时调用它。
expand = () => {
if (!this.selectRef.current) {
return;
}
this.selectRef.current.onMenuOpen();
}
这会起作用。
当我尝试将 React Select 引用到变量中时,我得到的是 StateManager Select 并且 typesctipt 不知道 this.selectRef.current.select 但这个 select 在变量中。更好的解决方案是将 this.selectRef.current.select 重新键入为 Select
我想通过点击其他元素展开 select。
import Select from "react-select";
interface OwnProps<T> {
alignRight?: boolean;
components?: ComponentsType<T>;
defaultValue?: Value<T>;
disabled?: boolean;
isSearchable?: boolean;
onChange?: DropdownChangeHandler<T>;
onBlur?: React.FocusEventHandler;
options: T[];
placeholder?: string;
value: Value<T>;
menuPortalTarget?: HTMLElement | null;
dataTest?: string;
}
export default class Dropdown<T = Option> extends React.PureComponent<OwnProps<T>> {
static defaultProps = {
isSearchable: false,
};
selectRef: React.RefObject<Select<T>>
constructor(props: OwnProps<T>){
super(props);
this.selectRef = React.createRef();
}
expand = () => {
console.log(this.selectRef)
// this.selectRef.current.select
};
render() {
const {
alignRight,
components,
menuPortalTarget,
defaultValue,
disabled,
isSearchable,
onChange,
options,
onBlur,
placeholder,
value,
dataTest,
} = this.props;
return (
<div data-test={dataTest}>
<Select<T>
components={components}
defaultValue={defaultValue}
isDisabled={disabled}
isSearchable={isSearchable}
menuPortalTarget={menuPortalTarget}
onBlur={onBlur}
onChange={onChange}
options={options}
placeholder={placeholder}
ref={this.selectRef}
value={value}
/>
</div>
);
}
}
更新您对扩展函数的定义,如下所示。并在点击另一个元素时调用它。
expand = () => {
if (!this.selectRef.current) {
return;
}
this.selectRef.current.onMenuOpen();
}
这会起作用。