这个问题与Redux Form v6.0.0相关(在写这个问题的时候是v6.0.0-alpha.15)。
如何从表单组件外部获取表单验证状态(如pristine
、submitting
、invalid
)?
让我举个例子。这是“经典的redux-form”伪结构:
<Form(MyExampleForm)>
<MyExampleForm>
<input name="title" ... />
<submit-button />
JSX中的...where <submit-button>
如下所示:
<button type="submit" disabled={pristine || submitting || invalid} >Save</button>
但在我的应用程序中,我的提交按钮必须在表单之外,放置在应用程序中的不同位置(比如在应用程序标题中,在整个应用程序的顶部)。
pristine
、submitting
、invalid
?(如果可能的话,不要进行真正令人讨厌的黑客攻击:-))发布于 2016-09-08 17:31:15
只需装饰另一个具有相同表单名称的组件,您就可以访问那里的相同状态变量。此外,您可以从父级传递onSubmit函数,并能够从您定义的任何位置提交所有字段值,因为它们都来自redux状态,而不是当前表单实例的HTML。(这是一种“老生常谈”的方式,但感觉是对的)
提交函数是从父函数定义的,而不是在状态下共享的,因此您可以对每个实例使用不同的提交函数。
class MySubmitForm extends React.Component {
render() {
return (
<button
onClick={this.props.handleSubmit}
>
{this.props.pristine ? 'pristine' : 'changed'}
</button>
)
}
}
export default reduxForm({
form: 'myFormName'
})(MySubmitForm);
发布于 2016-07-06 20:43:02
redux-form与React Redux一起工作,使React中的html表单能够使用Redux来存储其所有状态。
如果“在redux -Form之外”意味着仍然是redux应用程序,您可以尝试通过分派一些操作来在状态中存储这些属性。
在表单中:你正在检测正在发生的事情(当它无效时),在“外部”部分:你正在向组件传递一个适当的属性(带有你需要的属性),并依赖于你禁用了一个按钮。
发布于 2016-09-05 21:24:01
在最新的redux-form版本6.0.2中:
pristine
、submitting
、invalid
可以导出redux-form操作创建器http://redux-form.com/6.0.2/docs/api/ActionCreators.md/https://stackoverflow.com/questions/38148580
复制相似问题