【发布时间】:2017-11-19 14:36:27
【问题描述】:
我正在尝试在功能上使用这个http://redux-form.com/6.6.1/examples/remoteSubmit/,如下所示:
在 index.js 我声明了一个关闭我的模态组件(包含 redux 表单)的函数,以及一个调度提交操作(用于远程提交)的函数。两者都通过 props 传递给 AccountScene(一个演示组件)。
在 layout.js 上,AccountScene 组件通过 props 将两个函数传递给 CreateAccount.js(包含表单的最终组件)。
最后一个组件,当我在 UTModal 组件上按 acceptButton 时,我需要提交表单(在这个测试用例中,关闭模式)。
我尝试将此配置参数传递给 redux-form 装饰器:onSubmit: submitModal,但抛出 error: 'submitModal' is not defined。
提前致谢。
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);
【问题讨论】:
标签: reactjs redux redux-form