【问题标题】:Redux form problem (dispatch not working?)Redux 表单问题(dispatch 不起作用?)
【发布时间】:2019-06-04 10:02:31
【问题描述】:

更新:从我给你的信息中无法解决,问题是代码在 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 形式的同一个组件在一种情况下可以工作,而在另一种情况下却不行。

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

【问题讨论】:

    标签: reactjs redux redux-form


    【解决方案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?

    【讨论】:

    • 这不是问题,我通过回顾 git 历史发现了问题。更改为原始值后立即重写这些值。但是我很珍惜你的时间,所以你的回答被接受了。
    猜你喜欢
    • 2016-12-10
    • 1970-01-01
    • 2020-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-13
    • 1970-01-01
    相关资源
    最近更新 更多