Redux-form 调用外部表单组件提交
Redux-form calling submit outside form component
我正在构建一个带有动态表单的应用程序 (redux-form)。我想当用户点击提交按钮打印值。请注意,我的提交按钮位于我的应用程序 header 中(在表单之外)。为此,我正在关注 Redux-form 中的 tutorial。当我按下 "Save" 按钮时,我的控制台出现了这个错误:(0 , _reduxForm.submit) is not a function(…)
.
我的代码:
提交组件
import React from 'react'
import {connect} from 'react-redux'
import {submit} from 'redux-form'
const RemoteSubmitButton = ({dispatch}) =>
// How to get 'form' prop here ?
<button type="submit" onClick={() => dispatch( submit() ) }>Save</button>
export default connect()(RemoteSubmitButton)
主要成分
// Import librairies
import Submit from 'submitBtn'
export default class extends Component {
...
render(){
return (
// html code
<Submit form="newuser" /> // form prop gonna be dynamic
)
}
}
submit.js
import {SubmissionError} from 'redux-form'
const sleep = ms => new Promise(resolve => setTimeout(resolve, ms))
function submit(values) {
return sleep(1000) // simulate server latency
.then(() => {
window.alert(`You submitted:\n\n${JSON.stringify(values, null, 2)}`)
})
}
export default submit
new.js(新用户)
//Import librairies
import submit from 'submit'
class UserForm extends Component {
render() {
const {error, resetForm, handleSubmit} = this.props
return (<form onSubmit={ handleSubmit }>
<!-- Generate dynamic fields -->
</form>)
}
}
let FormWrapper = reduxForm({form: 'newuser', onSubmit: submit})(UserForm)
const selector = formValueSelector('newuser') // <-- same as form name
FormWrapper = connect(state => state.form)(FormWrapper)
你能告诉我我做错了什么吗?或者我该怎么做才能让它发挥作用?
根据 release notes.
在 v6.2.0
中添加了 submit
操作
您需要升级您的 redux-form
版本才能使其正常工作。
编辑:
为了提交表单,您需要在 RemoteSubmitButton
组件中使用 form
道具:
import React from 'react'
import {connect} from 'react-redux'
import {submit} from 'redux-form'
const RemoteSubmitButton = ({ dispatch, form }) => // Destructure the props here
<button type="submit" onClick={() => dispatch( submit(form) ) }>Save</button>
export default connect()(RemoteSubmitButton)
我正在构建一个带有动态表单的应用程序 (redux-form)。我想当用户点击提交按钮打印值。请注意,我的提交按钮位于我的应用程序 header 中(在表单之外)。为此,我正在关注 Redux-form 中的 tutorial。当我按下 "Save" 按钮时,我的控制台出现了这个错误:(0 , _reduxForm.submit) is not a function(…)
.
我的代码:
提交组件
import React from 'react'
import {connect} from 'react-redux'
import {submit} from 'redux-form'
const RemoteSubmitButton = ({dispatch}) =>
// How to get 'form' prop here ?
<button type="submit" onClick={() => dispatch( submit() ) }>Save</button>
export default connect()(RemoteSubmitButton)
主要成分
// Import librairies
import Submit from 'submitBtn'
export default class extends Component {
...
render(){
return (
// html code
<Submit form="newuser" /> // form prop gonna be dynamic
)
}
}
submit.js
import {SubmissionError} from 'redux-form'
const sleep = ms => new Promise(resolve => setTimeout(resolve, ms))
function submit(values) {
return sleep(1000) // simulate server latency
.then(() => {
window.alert(`You submitted:\n\n${JSON.stringify(values, null, 2)}`)
})
}
export default submit
new.js(新用户)
//Import librairies
import submit from 'submit'
class UserForm extends Component {
render() {
const {error, resetForm, handleSubmit} = this.props
return (<form onSubmit={ handleSubmit }>
<!-- Generate dynamic fields -->
</form>)
}
}
let FormWrapper = reduxForm({form: 'newuser', onSubmit: submit})(UserForm)
const selector = formValueSelector('newuser') // <-- same as form name
FormWrapper = connect(state => state.form)(FormWrapper)
你能告诉我我做错了什么吗?或者我该怎么做才能让它发挥作用?
根据 release notes.
在v6.2.0
中添加了 submit
操作
您需要升级您的 redux-form
版本才能使其正常工作。
编辑:
为了提交表单,您需要在 RemoteSubmitButton
组件中使用 form
道具:
import React from 'react'
import {connect} from 'react-redux'
import {submit} from 'redux-form'
const RemoteSubmitButton = ({ dispatch, form }) => // Destructure the props here
<button type="submit" onClick={() => dispatch( submit(form) ) }>Save</button>
export default connect()(RemoteSubmitButton)