尝试从验证函数中访问 redux 存储

Trying to access redux store from within validate function

使用 Redux 形式,我 运行 遇到了验证问题。

我想访问存储以在验证中引用一个状态。

我有标准的 redux 表单导出:

function mapStateToProps({address_object}) {
  return{
    address_object: address_object}
}

    export default reduxForm({
      form: 'wizard',
      destroyOnUnmount: false,
      forceUnregisterOnUnmount: true,
      validate,
    })(
      connect(mapStateToProps,mapDispatchToProps)(WizardFormFirstPage)
    );

和我的验证函数:

const validate = (values, props) => {
  console.log("DEBUG :",props)
... if / else etc

这让我得到了表格的道具

但是我想 运行 验证存储在状态中的东西。类似于:

    if (<something in state> === values.<thing>) {
 errors.field = "broken"}

控制台记录验证收到的道具,我无法让它看到任何状态。我可以明显地在 WizardFormFirstPage 组件中看到 address_object(因此操作和缩减器工作正常)

我是否需要在组件(与 mapStateToProps 相关联)中声明验证函数才能访问 this.props.whatever?如果是这样的话,如果我从 export reduxForm() 中调用它是否有效?

redux noob - 如果问题很愚蠢,我们深表歉意

你快到了。

连接表单时,在 mapStateToProps 中添加验证所需的状态。

状态将在验证道具中可用:

reduxForm({
    form: 'wizard',
    validate => (values, { stateForValidation }) => { 
        if(values.myField === stateForValidation)) {
            errors.myField = 'invalid'
        }
    }
})(connect(
    ({ stateForValidation }) => ({ stateForValidation })
)(form))

如果有人关心我最终使用

在字段级别处理验证
<Field
validate={this.validateAddress} ...> 

然后组件方法:

validateAddress = () => { 
errors = {} 
// validation stuff
errors._error = "string to display" //use this instead of errors.fieldname = ""
return errors
}

这让我获得了道具。但是@pariesz 上面的回答更好地回答了这个问题。