redux-form 仅在提交时显示验证错误
redux-form only show validation errors on submit
有没有办法配置 redux-form 以便验证错误仅在提交表单时显示?
我还想在用户开始输入或进行更改时清除单个表单域错误。
这可以用 redux-form 实现吗?
您负责呈现任何验证错误,因此您可以将它们配置为仅在提交失败后可见(即用户按下提交并且您的验证返回为失败)。为此,您的 input components wrapped with Field
被传递一个 meta
对象作为一个包含 submitFailed
字段的道具,该字段告诉表单提交是否失败。渲染该组件的实际代码可能如下所示:
render() {
const { meta: { error, submitFailed } } = this.props
return (
// ... rendering the input and then some
{ error && submitFailed ? (
<span className="validation-error">{ error }</span>
) : null }
// ... rendering the rest
)
}
为了在用户输入时不显示错误,您负责启用该行为,并且传递给包装输入组件的 props 保存键,这次 meta
对象保存一个名为 active
,它告诉你这个输入是否有焦点。代码可能是这样的(基于前面的例子):
render() {
const { meta: { active, error, submitFailed } } = this.props
return (
// ... rendering the input and then some
{ !active && (error && submitFailed) ? (
<span className="validation-error">{ error }</span>
) : null }
// ... rendering the rest
)
}
希望对您有所帮助!
我也有这个问题,原因是使用了 touchOnChange flag
reduxForm({
form: 'MyForm',
enableReinitialize: true,
touchOnChange: true,
})
所以我从 reduxForm 选项中删除了这个标志,代码开始正常工作 - 我只在提交时看到了验证错误
reduxForm({
form: 'MyForm',
enableReinitialize: true,
})
来自官网的例子
https://redux-form.com/8.2.2/examples/fieldlevelvalidation/
有没有办法配置 redux-form 以便验证错误仅在提交表单时显示?
我还想在用户开始输入或进行更改时清除单个表单域错误。
这可以用 redux-form 实现吗?
您负责呈现任何验证错误,因此您可以将它们配置为仅在提交失败后可见(即用户按下提交并且您的验证返回为失败)。为此,您的 input components wrapped with Field
被传递一个 meta
对象作为一个包含 submitFailed
字段的道具,该字段告诉表单提交是否失败。渲染该组件的实际代码可能如下所示:
render() {
const { meta: { error, submitFailed } } = this.props
return (
// ... rendering the input and then some
{ error && submitFailed ? (
<span className="validation-error">{ error }</span>
) : null }
// ... rendering the rest
)
}
为了在用户输入时不显示错误,您负责启用该行为,并且传递给包装输入组件的 props 保存键,这次 meta
对象保存一个名为 active
,它告诉你这个输入是否有焦点。代码可能是这样的(基于前面的例子):
render() {
const { meta: { active, error, submitFailed } } = this.props
return (
// ... rendering the input and then some
{ !active && (error && submitFailed) ? (
<span className="validation-error">{ error }</span>
) : null }
// ... rendering the rest
)
}
希望对您有所帮助!
我也有这个问题,原因是使用了 touchOnChange flag
reduxForm({
form: 'MyForm',
enableReinitialize: true,
touchOnChange: true,
})
所以我从 reduxForm 选项中删除了这个标志,代码开始正常工作 - 我只在提交时看到了验证错误
reduxForm({
form: 'MyForm',
enableReinitialize: true,
})
来自官网的例子 https://redux-form.com/8.2.2/examples/fieldlevelvalidation/