Redux表单问题(调度不起作用?)

时间:2019-06-04 10:02:31

标签: reactjs redux redux-form

更新:无法从我提供的信息中解决问题,问题是ComponentReceiveProps挂钩中的代码已更新,并且原始值覆盖了更改后的值。

我从事的外部项目开发工作做得不好。

它是使用React,Redux和Redux-Forms的前端应用程序

在两个不同的页面中使用一种形式。它在一页中效果很好,但在另一页中却没有反应。我无法通过UI或changeFieldValue函数来更改输入的值。 Redux状态不变。

在两种情况下,都使用相同的组件。它包含reduxForm函数。

const mapDispatchToProps = dispatch => ({
    changeFieldValue: (field, value) => dispatch(change('ContractConsumption', field, value)),
});

class ContractConsumption extends React.Component {
 // ...
}
ContractConsumption = reduxForm({
    form: 'ContractConsumption',
    enableReinitialize: true
})(ContractConsumption);

任何帮助将不胜感激。这让我感到困惑,为什么具有redux形式的相同组件在一种情况下会起作用,而在另一种情况下不会起作用。

整个代码过于复杂和高度耦合,因此无法轻松共享或进行部分测试。

1 个答案:

答案 0 :(得分:1)

您/代理商似乎未将表单连接到商店:

import React, { Component } from 'react';
import { reduxForm } from 'redux-form';
import { connect } from 'react-redux';

class Example extends Component {
    // ...
};

const mapStateToProps = (state) => ({
    // ...
});

const mapDispatchToProps = (dispatch)  => ({
    // ...
});

Example = connect(
    mapStateToProps,
    mapDispatchToProps
)(Example);

export default reduxForm({
    form: 'example' // a unique name for this form
})(Example);

请参见How do I mapStateToProps or mapDispatchToProps?