рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдЗрд╕реЗ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:
onChange?: (value: OptionType | OptionType[], action: ActionMeta) => void;
рдЬрдм рдХреЛрдИ рд╡рд┐рдХрд▓реНрдк рдЪреБрдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХрдЪреНрдЪрд╛ рд╡рд┐рдХрд▓реНрдк рдСрдмреНрдЬреЗрдХреНрдЯ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ, рди рдХрд┐ рдЙрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ ValueType
рдХреЛред
рдореБрдЭреЗ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд▓рдЧрд╛ред
рд╣реИрдВрдбрд▓ рдореЗрдВ value
рдЪрдпрдирд┐рдд рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рд╕рд░рдгреА рд╣реИ ( isMuli
рдкреНрд░реЛрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп)ред
_onTagChange(
value: ReactSelectTypes.ValueType<{value: number; label: string}>,
action: ReactSelectTypes.ActionMeta
) {
console.log('l68:', value, ' action:', action);
switch(action.action) {
case 'pop-value':
case 'remove-value':
}
if (value && value.length > 0) {
e let firstOption = value[0]; // Errors here with: Element implicitly has an 'any' type because type '{ value: number; label: string; } | { value: number; label: string; }[]' has no index signature.
}
// this.setState({ categoryTags: tags });
}
onChange
рд╣реИрдВрдбрд▓рд░ рдХрд╛ рдкрд╣рд▓рд╛ рддрд░реНрдХ рдХреЗрд╡рд▓ OptionType
рдкреНрд░рдХрд╛рд░ рдХрд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ OptionType
рдПрдХ-, рдПрдХрд╛рдзрд┐рдХ- рдпрд╛ рдХреЛрдИ рдорд╛рди рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдореЗрдВ рдСрдирдЪреЗрдВрдЬ рд╣реИрдВрдбрд▓рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЧрд╣рди рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП https://github.com/JedWatson/react-select/issues/2902 рджреЗрдЦреЗрдВред
@rvanlaarhoven - рдПрдХрд▓ рдпрд╛ рд╕рд░рдгреА рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрджреНрдпрддрди рдУрдкреАред рдЖрдИрдПрдордУ рдПрдХ рд╕рд░рдгреА рдХреЛ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЪрд╛рд╣реЗ isMulti
рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдпрд╛ рдирд╣реАрдВред рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╕рд░рдгреА рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП рдФрд░ рдпрд╣ рдЬрд╛рдВрдЪрдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдкреИрд░рд╛рдореАрдЯрд░ рдПрдХ рд╕рд░рдгреА рд╣реИ рдпрд╛ рдирд╣реАрдВред рд▓реЗрдХрд┐рди рдУрд╣ рд╣рд╛рдВ...
рдореИрдВ @JoshMcCullough рд╕реЗ рд╕рд╣рдордд рд╣реВрдБ
рдпрд╣ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рд╕реЗ рдирд┐рдкрдЯрдирд╛ рдкрдбрд╝реЗ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, Arrays.
рдпрджрд┐ рд╣рдо рд╕рд┐рдВрдЧрд▓ рд╕реЗрд▓реЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рд╣рдо рдХреЗрд╡рд▓ рдПрд░реЗ рд╕реЗ рд╕рд┐рдВрдЧрд▓ рдЖрдЗрдЯрдо рд▓реЗрддреЗ рд╣реИрдВ, рдЕрдиреНрдпрдерд╛ рд╣рдо рдПрд░реЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ - рдХреЛрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рдЪреЗрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╕рд╛рде рд╣реА, рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдпрд╣ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рд╣реИред
рдореЗрд░реЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдмрдбрд╝реА рдЭреБрдВрдЭрд▓рд╛рд╣рдЯ рдпрд╣ рд╣реИ рдХрд┐ isMulti
рдХреЗ рдореВрд▓реНрдп рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рд╕рд░рдгреА рдпрд╛ рдПрдХрд▓ рдорд╛рди рд╡рд╛рдкрд╕ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЯрд╛рдЗрдк рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА onChange
рдХреЗ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдХреНрдпрд╛ рд╣рдо рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рдпреВрдирд┐рдпрдирд┐рдВрдЧ рдпрд╛ рд╕рд╢рд░реНрдд рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? (рдЪреЗрддрд╛рд╡рдиреА: рдкрд░реАрдХреНрд╖рдг рди рдХрд┐рдП рдЧрдП рд╡рд┐рдЪрд╛рд░)
interface BaseProps<OptionType extends OptionTypeBase = { label: string; value: string }> extends SelectComponentsProps {
... /* all existing fields except isMulti and onChange */
}
interface SingleValueProps<...> extends BaseProps<...> {
isMulti: false;
onChange: (value: OptionType | null | undefined, action: ActionMeta) => void;
}
interface MultiValueProps<...> extends BaseProps<...> {
isMulti: true;
onChange: (value: OptionsType<OptionType> | null | undefined, action: ActionMeta) => void;
}
/* where the props are defined */
selectProps: SingleValueProps<...> | MultiValueProps<...>
рдпрд╛ рд╢рд╛рдпрдж
interface Props<IsMulti extends boolean, OptionType extends OptionTypeBase = { label: string; value: string }> extends SelectComponentsProps {
...
isMulti: IsMulti,
onChange: (value: ValueType<IsMulti, OptionType>, action: ActionMeta) => void;
...
}
export type ValueType<IsMulti extends boolean, OptionType extends OptionTypeBase> =
(IsMulti extends false ? OptionType : OptionsType<OptionType>) | null | undefined;
рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдФрд░ рд╕реЛрдЪрдиреЗ рдХреЗ рдмрд╛рдж, рдпрджрд┐ рдЖрдк рд╣рд╛рд░реНрдб-рдХреЛрдб isMulti
(рдЙрджрд╛рд╣рд░рдг <Select isMulti={false} />
рд▓реЗрдХрд┐рди рдирд╣реАрдВ рдпрджрд┐ рдЖрдк <Select isMulti={getValue()} />
рдЬреИрд╕реЗ рдмрдпрд╛рди рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдкреНрд░рдХрд╛рд░ рдЕрдиреБрдорд╛рдирд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд░рдгрдиреАрддрд┐ рд╢рд╛рдпрдж рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред
рдореИрдВ рдХрдВрдкрд╛рдЗрд▓рд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд┐рдирд╛ рд╡рд░реНрддрдорд╛рди рдкрд░рд┐рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реВрдВ?
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ isArray рдЬрд╛рдВрдЪ рдЕрдм рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рдХрд╛рд░ OptionType | OptionType[]
рдФрд░ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрд╕рдХрд╛ рдЕрдиреБрдорд╛рди рдирд╣реАрдВ рд▓рдЧрд╛ рд╕рдХрддрд╛ рд╣реИред
рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рджрд╛рд╡реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ:
props.onChange((v as YourOptionTypeHere).value);
рдХреНрдпрд╛ рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ) рдмрд╣реБ рдореВрд▓реНрдп undefined, Array<Option>, Option
?
@hoetmaaiers рдЖрдк рдПрдХ рд╕рд╣рд╛рдпрдХ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ:
type Nullable<T> = T | null | undefined;
рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВрдиреЗ рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛:
interface iOption { label: string; value: string; };
рдФрд░ рдлрд┐рд░, рдкреИрд░рд╛рдореАрдЯрд░ рдбрд╛рд▓рд╛:
onChange={(option) => myMethod((option as iOption).value) }
as
рдХрд╛ рдЙрдкрдпреЛрдЧ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдкреВрд░реЗ рдЙрджреНрджреЗрд╢реНрдп рдХреЛ рд╣рд░рд╛ рджреЗрддрд╛ рд╣реИред рдореИрдВ рдХрд┐рд╕рд╕реЗ рдореВрд▓реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реВрдВ?
option: ValueType<{value :string, label: string}>
as
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛? рд╡рд░реНрддрдорд╛рди рд╕рдорд╛рдзрд╛рди рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ рдФрд░ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдмрдЧ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддрд╛ рд╣реИ (рд╢рд╛рдпрдж рд╣реЛрдЧрд╛)ред
рдореБрдЭреЗ рдЕрднреА рднреА рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЖ рд░рд╣реА рд╣реИ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдСрди рдЪреЗрдВрдЬ (рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдХрд┐рд╕реА рднреА рдмрд╣реБ рдЪрдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ) рдкрд░ рдПрдХрд▓ рд╡рд┐рдХрд▓реНрдк рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдХрд╛рд╕реНрдЯ рдХрд░рдирд╛ рд╡рд╛рдХрдИ рдкрд░реЗрд╢рд╛рди рд╣реИ ....
рд╣рд░ рдмрд╛рд░ рдореБрдЭреЗ рдЖрдЗрдЯрдо => (рдЖрдЗрдЯрдо рдХреЛ OptionTypeBase рдХреЗ рд░реВрдк рдореЗрдВ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдорд╛рдиред рд╕рдЪ рдореЗрдВ рдЦрд╝рд░рд╛рдмред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдореИрдВ рдХрдВрдкрд╛рдЗрд▓рд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд┐рдирд╛ рд╡рд░реНрддрдорд╛рди рдкрд░рд┐рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реВрдВ?
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ isArray рдЬрд╛рдВрдЪ рдЕрдм рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рдХрд╛рд░
OptionType | OptionType[]
рдФрд░ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрд╕рдХрд╛ рдЕрдиреБрдорд╛рди рдирд╣реАрдВ рд▓рдЧрд╛ рд╕рдХрддрд╛ рд╣реИред