我非常陌生,因此可能会变得很糟糕。
我从https://redux-form.com/7.2.3/examples/wizard/开始使用向导表单,然后尝试提交表单并在同一提交单击时更改页面。
我的意思是,在WizardFormSecondPage上提交表单并将页面更改为WizardFormThirdPage以显示值。到目前为止,我设法提交了表单和更改页面,但分别进行并且试图通过单击同一按钮来连接两个事件。
也许可以通过以下语句验证 Prop
并触发.state?
(当然,从句法上讲这是错误的,但只是试图表达想法)
class WizardForm extends Component {
constructor(props) {
super(props)
this.nextPage = this.nextPage.bind(this)
this.previousPage = this.previousPage.bind(this)
this.state = {
page: 1
}
}
nextPage() {
this.setState({ page: this.state.page + 1 })
}
previousPage() {
this.setState({ page: this.state.page - 1 })
}
render() {
const { onSubmit } = this.props
const { page } = this.state
return (
<div>
{page === 1 && <WizardFormFirstPage onSubmit={this.nextPage} />}
{page === 2 && (
<WizardFormSecondPage
previousPage={this.previousPage}
if(onSubmit={onSubmit}) {
this.nextPage
}
/>
)}
{page === 3 && (
<WizardFormThirdPage
/>
)}
</div>
)
}
}
WizardForm.propTypes = {
onSubmit: PropTypes.func.isRequired
}
export default WizardForm
更新:
因此,另一个想法是从
showResults.js
上的index.js
调用的<WizardForm onSubmit={showResults} />
渲染第三页import React from "react";
const testField = () => (
<div>
<h1>TEST</h1>
</div>
);
const sleep = ms => new Promise(resolve => setTimeout(resolve, ms));
export default (async function showResults(values) {
await sleep(500); // simulate server latency
console.log(`You submitted:\n\n${JSON.stringify(values, null, 2)}`);
testField;
});
默认情况下,
showResults
返回带有提交的字段信息的console.log
,现在我正在尝试仅渲染纯div但没有任何不错的结果。有人可以告诉您遗漏了什么地方,以及创建showResults
组件的最佳实践是什么? 最佳答案
https://github.com/final-form/react-final-form解决了我的问题,它功能更强大,更易于使用。