![](/img/trans.png)
[英]Redux-Form and React-RTE - Save RTE editorValue to form state?
[英]React not aware of Redux-Form state change
我们的应用程序有一个管理员页面,可以为我们的客户制作报价。
报价由一个或多个“工作”组成。 例如,如果报价是用于安装冰箱,并进行码头工作,报价将包括以下两个工作:
还有与作业相关联的其他元数据,其保证用于创建/编辑单个作业的整个其他形式。
因此,用于创建/编辑单引号的页面包含两种形式:
我有一个顶级容器组件,呈现以下2个Redux-Form组件:
{/* IN CONTAINER COMPONENT */}
<JobModalForm
onSubmit={this.saveJob}
/>
<QuoteForm
initialValues={quote}
onSubmit={this.updateQuote}
updateQuote={this.updateQuote}
deleteQuote={this.deleteQuote}
publicQuoteUrl={this.props.publicQuoteUrl}
linkCopied={() => { this.props.snackbarString('link copied!') }}
/>
这两种形式都存储在表单状态的不同部分中:
--form |
| -- quote
|
| -- job
但是,这两种形式必须相互通信。
一切都在起作用,除了一件事:
当我第一次更新作业(是否预先存在使用initialValues
或新添加)时,更新有效:如果我更改作业的价格, QuoteForm
将呈现新价格。 这是通过reduxForm的arraySplice
完成的
// in container component ...
// onSubmit handler for JobModalForm
saveJob = (job, dispatch, props) => {
// if this is an existing job (whether or not it has been created in the db or not)
// update it
// else
// append the job to the existing quote
if (job._id || job.fresh) {
const action = arraySplice('quote', 'jobs', job.index, 1, job)
dispatch(action)
} else {
dispatch(arrayPush('quote', 'jobs', job ))
}
dispatch({ type: JobModalActions.TOGGLE_MODAL })
}
但是,对QuoteForm的ArrayField中的任何现有字段的后续更新不会触发React的render
。 例如,在我的初始更新后更改任何工作的价格不会被React注意到。
Redux-Form成功调度一个动作 , 商店的form
键确实包含更新的字段 。
奇怪的是,创建任意数量的作业确实有效(通过如上所示的arrayPush
)。
我完全难过,需要一些帮助来弄清楚为什么JobModalForm
表单提交仅适用于新工作。
以下是复制问题的示例: https : //www.webpackbin.com/bins/-KgoQMIyvxdJb7Pvh0eu
包的版本:
"react-redux": "^4.4.1",
"redux": "^3.3.1",
"redux-form": "^6.5.0",
"redux-form-material-ui": "^4.1.2",
export default connect(mapStateToProps, mapDispatchToProps)(reduxForm({
form: 'job',
enableReinitialize: true
})(JobModal))
export default connect(null, mapDispatchToProps)(reduxForm({
form: 'quote'
})(QuoteForm))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.