λλ μ΄κ²μ΄ λ€μκ³Ό κ°μ΄ μ μλμ΄μΌ νλ€κ³ μκ°νλ€.
onChange?: (value: OptionType | OptionType[], action: ActionMeta) => void;
μ΅μ
μ μ ννλ©΄ ν΄λΉ κ°μ²΄μ ValueType
κ° μλ μμ μ΅μ
κ°μ²΄κ° μ μ‘λ©λλ€.
λλ μ΄κ²μ΄ μμ ν νΌλμ€λ½λ€λ κ²μ μμλ€.
νΈλ€μ value
λ μ νν μ΅μ
μ λ°°μ΄μ
λλ€( isMuli
prop μ¬μ© μ).
_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
κ°μ΄ νλ, μ¬λ¬ κ° λλ μ ν μμ μ μκΈ° λλ¬Έμ
λλ€.
TypeScriptμ κ²°ν©λ onChange νΈλ€λ¬μ λν λ³΄λ€ μ¬μΈ΅μ μΈ λ Όμλ https://github.com/JedWatson/react-select/issues/2902 λ₯Ό μ°Έμ‘°
@rvanlaarhoven -- λ¨μΌ λλ λ°°μ΄μ νμ©νλλ‘ OPλ₯Ό μ
λ°μ΄νΈνμ΅λλ€. IMO λ°°μ΄μ isMulti
μ ν μ¬λΆμ κ΄κ³μμ΄ νΈλ€λ¬μ μ λ¬λμ΄μΌ ν©λλ€. μ°λ¦¬λ λ°°μ΄μ μμνκ³ λ§€κ°λ³μκ° λ°°μ΄μΈμ§ νμΈν νμκ° μμ΅λλ€. νμ§λ§ μ...
@JoshMcCulloughμ λμν©λλ€.
λ¨μΌ λ°μ΄ν° μ ν(μ΄ κ²½μ°μλ λ°°μ΄)λ§ μ²λ¦¬νλ©΄ λ μ¬μΈ κ²μ
λλ€.
λ¨μΌ μ νμ μ¬μ©νλ κ²½μ° λ°°μ΄μμ λ¨μΌ νλͺ©λ§ κ°μ Έμ€κ³ κ·Έλ μ§ μμΌλ©΄ λ°°μ΄λ‘ μμ
ν©λλ€. μΆκ° κ²μ¬κ° νμνμ§ μμ΅λλ€. λμμ, μ΄μ κ°μ λΌμ΄λΈλ¬λ¦¬λ₯Ό λ€λ£° λ μ΄κ²μ΄ λ¨μν λ³νκ° μλμ μ΄ν΄ν©λλ€.
λμκ² κ°μ₯ ν° μ±κ°μ¬μ 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()} />
μ κ°μ λͺ
λ Ήλ¬Έμ μ 곡νλ κ²½μ°μλ κ·Έλ μ§ μμΌλ―λ‘ μ΄ μ λ΅ μλ§ μλνμ§ μμ κ²μ
λλ€.
μ»΄νμΌλ¬ μ€λ₯ μμ΄ νμ¬ μ μλ₯Ό μ΄λ»κ² μ¬μ©ν©λκΉ?
μ νμ΄ OptionType | OptionType[]
κ° μλκ³ typescriptκ° μ΄λ₯Ό μ μΆν μ μκΈ° λλ¬Έμ isArray κ²μ¬κ° λ μ΄μ μΆ©λΆνμ§ μμ κ² κ°μ΅λλ€.
μ¬κΈ°μ ν΄κ²° λ°©λ²μΌλ‘ νμ μ΄μ€μ μ μ¬μ©νμ΅λλ€.
props.onChange((v as YourOptionTypeHere).value);
λ€μ€ κ° undefined, Array<Option>, Option
λν΄ μΈν°νμ΄μ€(Typescript)λ₯Ό μ¬μ©ν μ μμ΅λκΉ?
@hoetmaaiers λμ°λ―Έλ₯Ό λ§λ€ μ μμ΅λλ€.
type Nullable<T> = T | null | undefined;
ν΄κ²° λ°©λ²μΌλ‘ μΈν°νμ΄μ€λ₯Ό μ μνμ΅λλ€.
interface iOption { label: string; value: string; };
κ·Έλ° λ€μ λ§€κ° λ³μλ₯Ό μΊμ€ν
νμ΅λλ€.
onChange={(option) => myMethod((option as iOption).value) }
as
λ₯Ό μ¬μ©νλ©΄ typescriptλ₯Ό μ¬μ©νλ λͺ¨λ λͺ©μ μ΄ λ¬΄ν¨νλ©λλ€. λλ λꡬμκ²μ κ°μΉλ₯Ό μ»μ΄μΌ νλκ°?
option: ValueType<{value :string, label: string}>
as
λ₯Ό μ¬μ©νμ§ μκ³ ? νμ¬ ν΄κ²° λ°©λ²μ μ루μ
μ΄ μλλ©° ν₯ν λ²κ·Έκ° λ°μν μ μμ΅λλ€(μλ§λ).
λλ μ¬μ νμ΄ λ¬Έμ λ₯Ό κ²ͺκ³ μμΌλ©° λͺ¨λ onChangeμμ μννλ κ²μ μ λ§ μ±κ°μ μΌμ λλ€ (λ€μ€ μ νμ μ¬μ©νμ§ μκΈ° λλ¬Έμ) λ¨μΌ μ΅μ μ νμΌλ‘ μΊμ€νΈ ....
λ§€λ² item =>(item as OptionTypeBase).valueλ₯Ό μ¬μ©ν΄μΌ ν©λλ€. μ λ§ λλΉ .
κ°μ₯ μ μ©ν λκΈ
μ»΄νμΌλ¬ μ€λ₯ μμ΄ νμ¬ μ μλ₯Ό μ΄λ»κ² μ¬μ©ν©λκΉ?
μ νμ΄
OptionType | OptionType[]
κ° μλκ³ typescriptκ° μ΄λ₯Ό μ μΆν μ μκΈ° λλ¬Έμ isArray κ²μ¬κ° λ μ΄μ μΆ©λΆνμ§ μμ κ² κ°μ΅λλ€.