<TextField type="number" min="0" max="10" step="1" />
はTypescriptでコンパイルする必要があります
最小で次のTypescriptエラーを受け取ります。最大とステップで同様です: [ts] Property 'min' does not exist on type 'IntrinsicAttributes & TextFieldProps & { children?: ReactNode; }'.
| 技術| バージョン|
| -------------- | --------- |
| 素材-UI | 1.0.0-beta.21 |
| React | 16.0.0 |
| Typescript | 2.6.1 |
これは機能しますか?
<TextField type="number" inputProps={{ min: "0", max: "10", step: "1" }} />
はい、それは機能します。 ただし、 inputProps
は、何かが含まれているオブジェクトを受け入れるため、この方法で型システムを効果的にオプトアウトしています。
はい、それは機能します。 ただし、
inputProps
は、何かが含まれているオブジェクトを受け入れるため、この方法で型システムを効果的にオプトアウトしています。
良い点です。 inputProps
入力を修正するために#9321を開きました。
inputProps
は、 InputComponent
で_何でも_できるようにすることを目的としています。 これにより、外部コンポーネントとのオープンな統合が可能になりますが、残念ながら、タイプがわからない、またはない場合があります。
例:
import * as MaskedInput from 'react-text-mask'
<TextField
InputProps={{
inputComponent: MaskedInput,
}}
inputProps={{
guide: false,
mask,
placeholderChar: '\u2000',
}}
type="tel"
value={value}
/>
したがって、同じシナリオで強く型付けされたinputProps
を回避する代わりに、次のようになります(@pelotomに感謝)
import { InputProps as MuiInputProps } from 'material-ui/Input'
<TextField
InputProps={{
inputComponent: (inputProps: MuiInputProps) => (
<MaskedInput {...inputProps} guide={false} mask={mask} placeholderChar="\u2000" />
),
}}
type="tel"
value={value}
/>
@pelotomは、このAPIを再検討するための新しい提案/問題を提出しています。
@rosskevin
MaskedInputが定義されていません。
マスクが定義されていません
:(
これは非常に複雑な回避策のようです
これらをTextFieldレベルで定義して、どこでもロジックを繰り返すことなく検証を実行できるようにすることをお勧めします。 最小/最大/ステップ要件のある数値フィールドに使用するたびにTextFieldを拡張する必要はありません。
最も参考になるコメント
これは機能しますか?