如何使用react-native标准化redux-form以防止更多输入?

时间:2018-05-25 21:05:52

标签: react-native redux-form

使用: redux-form@7.3.0

<Field
    component={({ input: { onChange }}) => <TextInput onChangeText={onChange} />}
    name=‘truncate’
    normalize={(value) => value && value.toString().slice(0,2) || ''}
/>

在此截断字段中键入时,显示的值不会被截断。我可以继续输入前两个字符并查看输出。

在提交周围的表单时,我只看到截断字段值中的前两个字符。

为什么不截断可见输出会阻止更多输入?

根据下面的Charles回复,我还尝试了redux-form示例页面上显示的电话号码示例;输出没有标准化。

尝试重新创建示例中显示的电话规范化最终会得到相同的结果 - 显示的字段没有规范化:

https://redux-form.com/7.3.0/examples/normalizing/

1 个答案:

答案 0 :(得分:0)

您可以移除对normalize道具的使用情况,并将maxLength道具应用于TextInput

示例:

<Field
    component={({ input: { onChange }}) => <TextInput onChangeText={onChange} maxLength={2} />}
    name="truncate"
/>

或者,您可以尝试将剩余的输入道具传递到TextInput

示例:

<Field
    component={({ input: { onChange, ...remainingProps }}) => <TextInput onChangeText={onChange} {...remainingProps} />}
    name="truncate"
    normalize={value => value && value.slice(0, 2)}
/>