我试图在功能上使用此http://redux-form.com/6.6.1/examples/remoteSubmit/,这种结构:终极版表格不能做远程提交
在index.js我宣布关闭我的模式组件的功能(包含了Redux形式)和一个调度提交动作(用于远程提交)的函数。两者都通过道具传递给AccountScene(一个演示组件)。
在layout.js上,AccountScene组件通过props将两个函数传递给CreateAccount.js(包含表单的最终组件)。在最后一个组件中,我需要在按UTModal组件上的acceptButton时提交表单(并在此测试用例中关闭模式)。
我试着将此配置参数传递给redux-form装饰器:onSubmit:submitModal,但抛出“错误:'submitModal'未定义”。
在此先感谢。
index.js
class AccountsContainer extends Component {
state = { modalIsOpen: false };
handlePress =() => {
this.setState({ modalIsOpen: true });
};
handleModalClose =() => {
this.setState({ modalIsOpen: false });
};
submit = values => {
this.props.dispatch(submit('createaccount'));
};
render() {
return (
<AccountScene
onCreateAccount={this.handlePress}
modalIsOpen={this.state.modalIsOpen}
closeModal={this.handleModalClose}
accounts={this.props.accounts}
submitModal={this.submit}
/>
);
}
}
AccountsContainer.propTypes = {
accounts: accountPropTypes().accounts
};
const mapStateToProps = store => ({
accounts: store.account.accounts
});
export default connect(mapStateToProps)(AccountsContainer);
layout.js
function AccountScene({ onCreateAccount, modalIsOpen, closeModal, accounts, submitModal }) {
return (
<div>
<SecondaryTopbar
titleText={i18next.t('accounts:accounts')}
titleIcon={icon}
iconAltText={i18next.t('accounts:accounts')}
>
<UTButton base onPress={onCreateAccount} green type="submit">
{i18next.t('accounts:addAccount')}
</UTButton>
</SecondaryTopbar>
<AccountList accounts={accounts} />
<CreateAccount modalIsOpen={modalIsOpen} closeModal={closeModal} submitModal={submitModal} onSubmit={closeModal} />
</div>
);
}
AccountScene.propTypes = {
onCreateAccount: PropTypes.func,
modalIsOpen: PropTypes.bool.isRequired,
closeModal: PropTypes.func.isRequired,
accounts: accountPropTypes().accounts
};
export default reduxForm({ form: 'createaccount' })(AccountScene);
CreateAccount.js
let CreateAccount = props => {
const {closeModal, modalIsOpen, submitModal, handleSubmit} = props
return (
<div>
<UTModal
isOpen={modalIsOpen}
onRequestClose={() => this.setState({ modalIsOpen: false })}
acceptButton={{ text: 'Add', onPress:() => "I need to submit form here!" }}
title={'Create account'}
>
<UTLabel black>Some text</UTLabel>
<div>
<form onSubmit={handleSubmit} noValidate>
<Field
component={UTFormInput}
name="accountNumber"
type="text"
placeholder="Customer Number"
validate={[InputValidations.required('Required')]}
/>
</form>
</div>
</UTModal>
</div>
);
}
CreateAccount.propTypes = {
modalIsOpen: PropTypes.bool.isRequired,
closeModal: PropTypes.func.isRequired
};
export default reduxForm({ form: 'createaccount', onSubmit: submitModal })(CreateAccount);
好的,这解释了错误信息,但我可以做的是,当我按父母UTModal组件上的acceptButton时,表单被提交? –
我确定你可以。我将编辑我的答案,并提供我认为可行的代码 –
我试过这个,但是这不起作用,现在抛出: 未捕获(承诺)TypeError:无法读取属性'的道具'未定义 在CreateAccount (bundle.js:82241) –